Sql 预编译方面的语句与准备好的语句
我理解使用语句和PreparedStatement之间的主要区别(PreparedStatements允许传入参数)。但我读到了这两者之间的细微差别——即PreparedStatement比泛型语句更快,因为PreparedStatement SQL是预编译的Sql 预编译方面的语句与准备好的语句,sql,jdbc,Sql,Jdbc,我理解使用语句和PreparedStatement之间的主要区别(PreparedStatements允许传入参数)。但我读到了这两者之间的细微差别——即PreparedStatement比泛型语句更快,因为PreparedStatement SQL是预编译的 预编译到底意味着什么?为什么它会带来不同 准备好的语句执行以下检查: 确保表和列存在 确保参数类型与其列匹配 解析SQL以确保语法正确 编译并缓存已编译的SQL,以便无需重复这些步骤即可重新执行 编译过程中最重要的部分是创建查询计划 顾
预编译到底意味着什么?为什么它会带来不同 准备好的语句执行以下检查:
- 确保表和列存在
- 确保参数类型与其列匹配
- 解析SQL以确保语法正确
- 编译并缓存已编译的SQL,以便无需重复这些步骤即可重新执行
我想我是想强调这里有正反两面。PreparedStatements在某些情况下可以更快,但您必须小心。检查表和列的存在性、验证语法、验证访问权限、准备执行计划:db服务器对每个语句都执行此操作,无论是否准备好。像Oracle这样的服务器还根据接收到的语句字符串的散列来缓存语句(准备好或不准备好)。一旦这项工作完成,并且db服务器已经“准备好”了一个内存区域,那么jdbc驱动程序就可以绑定参数并使用这个服务器对象。然后重新绑定新参数并再次使用,而无需重新准备语句。如果驱动程序是这样实现的。关于预编译的详细信息:[[1]: