日期:2014-05-17  浏览次数:20417 次

关于SQL语句执行效率问题
请问专家,在一个应用中需要执行很多的SQL语句,那么,以下两种方式,哪种效率更高?或者是否有更好的方法?


1、多个SQL语句组合后,一次执行;如:
  "select a from b;update a set x=1 where c=1;delete from x where y=1"...然后建立连接一次执行;

2、多个SQL语句,分别依次执行;
  建立连接,执行一条语句,关闭连接;建立连接,执行另一条语句,关闭连接。。。

请专家指教

------解决方案--------------------
如果这是在同一个功能里,那第一种方式的效率更高点,但这应该明显是不同的功能,语句不是很复杂,只是简单的查询、更新及删除,差别不是很大。
------解决方案--------------------
连接数据库其实需要很多开销,比如:验证网络是否联通、验证实例服务、验证账号密码、记录会话信息、维护会话等等。在大并发量的时候,瓶颈就会很明显。所以不应该频繁连接数据库,应该充分利用每一次连接做尽可能多的事情。我以前去听培训课,一个微软出来的讲师说自己的经验,去一个工厂维护系统,发现只能开到5条流水线,后来检查发现循环点放到连接数据库外面了,后来把循环点放到连接内部,流水线可以考到100多条。
现在回答你的问题:
最好的方法还是把你能一次性更新的操作全部放到一次数据库连接中。如果实在不行,也就没办法了。记住一点:数据库是面向集合的操作,而不是面向过程的操作,哪怕处理一条数据,你也应该时刻告诉自己你再处理“一堆”数据,这样你的代码就会高效的多。
------解决方案--------------------
现在的应用基本都会是用连接池的,所以差别不会是特别大.建议逻辑分段隔开就可以了.
------解决方案--------------------
这个要看你的需求了啊
如果你的数据库非常忙的话,建议你做到一次连接取到足够的数据
这样效率确实会高些

另外,如果你都知道需要哪些数据了。你直接取了放到内存中更方便更高效。