论坛首页 入门技术论坛

PreparedStatement与Statement

浏览 2322 次
该帖已经被评为新手帖
作者 正文
   发表时间:2008-06-20  

一般大家都会认为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。

   发表时间:2008-06-20  
效率是相对的
0 请登录后投票
   发表时间:2008-06-23  
贴子被发配到这里很不公平啊!
好多人知其一不知其二,都以为PreparedStatement的性能比Statement高,而且有的人用PreparedStatement时又没有用好,反而事得其反。
郁闷,不得志啊。
0 请登录后投票
论坛首页 入门技术版

跳转论坛:
Global site tag (gtag.js) - Google Analytics