PreparedStatement与Statement

一般大家都会认为PreparedStatement执行SQL的效率会比Statement的高,其实这个不完全正确的。

其实事实是这样的,创建一个PreparedStatement对象到返回ResultSet对象,比创建一个Statement对象到返ResultSet对象的效率要低。原因就在于DBMS服务器的收PreparedStatement对象发送来的SQL时,要预编译处理。而DBMS在收到Statement对象发送来的SQL时,直接编译SQL。预编译比直接编译的开销要大,而预编译的好处是这条SQL可以改变参数执行多次查询。所以单独执行一条SQL时,PreparedStatement会比Statement的效率低。

那么为什么说PreparedStatement比Statement的效率高呢,在执行可变参数的一条SQL时,PreparedStatement比Statement的效率高,因为DBMS预编译一条SQL当然会比多次编译一条SQL的效率要高。

其实,还有一个要注要意的细节,如果将连接的自动提交模式设为true,用PreparedStatement来处理一条有可变参数的SQL时,你每次改变了参数后,DBMS还会做预编译处理,与Statement处理的情形一样,所以不能达到提高效率的要求。所以要想用PreparedStatement来提高应用的效率,要满足两个条:1.这条SQL存在可变参数;2.连接的自动提交模式设为false。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值