浏览 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。 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-06-20
效率是相对的
|
|
返回顶楼 | |
发表时间:2008-06-23
贴子被发配到这里很不公平啊!
好多人知其一不知其二,都以为PreparedStatement的性能比Statement高,而且有的人用PreparedStatement时又没有用好,反而事得其反。 郁闷,不得志啊。 |
|
返回顶楼 | |