日期:2014-05-20  浏览次数:20648 次

关于数据库效率的问题
如: 数据库中有上1000万的数据。
1:用java发送请求语句查询select * from user where id in (1,2,3,4,5);发一条查询语句获取结果
2:用java发送请求语句查询:
  select * from user where id=1
  select * from user where id=2
  select * from user where id=3
  select * from user where id=4
  select * from user where id=5
发5条查询语句获取结果。

请问上面两种查询方法哪种快点?


------解决方案--------------------
应该是1快
------解决方案--------------------
发多条是不是要建立多次连接,即使用连接池。
1的要快啊,等同于我们一次取出数据来。
------解决方案--------------------
必然是1快。。。。。。

你2的方式就是重复请求了5次,五次网络传输,五次语法解析(可能是一次),五次执行,五次返回,怎么可能快的起来?!

所谓的 in 效率低于 =,指的是有表连接的情况,比如你有另一张表,假设叫tnum,里面只有五行记录 1~5

那么:
select * from user, tnum where user.id=tnum.id 
效率比 
select * from user where id in (1,2,3,4,5) 
高。