预编译方面的语句与准备语句

har*_*ryo 5 sql jdbc

我理解使用Statement和PreparedStatement之间的主要区别(PreparedStatements允许传入参数).但我读到了两者之间的细微差别 - 即PreparedStatements可以比通用语句更快,因为PreparedStatement SQL是预编译的.

预编译究竟是什么意思,为什么它会产生影响?

duf*_*ymo 8

准备好的声明执行以下检查:

  • 确保表和列存在
  • 确保参数类型与其列匹配
  • 解析SQL以确保语法正确
  • 编译并缓存已编译的SQL,以便可以重新执行它而无需重复这些步骤

  • 检查表和列是否存在,验证语法,验证访问权限,准备执行计划:db server是否为每个准备好的语句执行此操作.像Oracle这样的服务器也会根据收到的语句字符串的哈希值来缓存语句(是否准备好).完成此工作后,数据库服务器已"准备好"一个准备好的内存区域,然后jdbc驱动程序可以绑定参数并使用此服务器对象.然后重新绑定新参数并重新使用,而无需重新准备语句.如果驱动程序以这种方式实现它. (2认同)