预处理语句是Statement的一个稍微强大一点的版本,并且应该总是至少像Statement一样快速和容易处理。
预估报表可以被参数化
大多数关系数据库处理JDBC / SQL查询分为四个步骤:
解析传入的SQL查询
编译SQL查询
规划/优化数据采集路径
执行优化的查询/获取和返回数据
对于发送到数据库的每个SQL查询,Statement将始终执行上述四个步骤。预处理语句预先执行上述执行过程中的步骤(1)-(3)。因此,在创建准备语句时,会立即执行一些预优化。其效果是在执行时减轻数据库引擎的负载。
现在我的问题是:
“使用预准备报表还有其他好处吗?”
准备查询或参数化查询的另一个特征:引用自本文。
该语句是数据库系统重复执行同一条SQL语句的高效特性之一。准备好的语句是模板的一种,由应用程序使用不同的参数。
语句模板准备好后发送给数据库系统,数据库系统对该模板进行解析、编译和优化,不执行即可存储。
有些参数,比如在以后的应用程序创建模板时没有传递子句,将这些参数发送给数据库系统,数据库系统使用SQL语句模板并按请求执行。
预处理语句对于SQL注入非常有用,因为应用程序可以使用不同的技术和协议来准备参数。
当数据数量不断增加,索引频繁变化时,Prepared statement可能会失败,因为在这种情况下需要一个新的查询计划。