当前位置: 代码迷 >> 高性能WEB开发 >> sql中,in 和 = 运算符哪个效率高解决方案
  详细解决方案

sql中,in 和 = 运算符哪个效率高解决方案

热度:340   发布时间:2012-03-16 16:34:56.0
sql中,in 和 = 运算符哪个效率高
我测试了不少次,感觉他们两个都差不多。

------解决方案--------------------
弄上几千万数据量试试看?~~~~
看情况吧。
我觉得=比in快。。。
in 还没有exists 效率高呢~~~
------解决方案--------------------
=的速度快。。。。
------解决方案--------------------
对,=的速度快,因为'='是等号右边的值直接赋给等号前面的变量,,

而in 则是在in后面的集合中寻找,有可能集合中会是多个,

结果可见

回答完毕

2009-11-17 09:28:00
------解决方案--------------------
探讨
对,=的速度快,因为'='是等号右边的值直接赋给等号前面的变量,,

而in 则是在in后面的集合中寻找,有可能集合中会是多个,

结果可见

回答完毕

                                                                  2009-11-17 09:28:00

------解决方案--------------------
= 可以用索引
数量量大的时候就看的出
------解决方案--------------------
in 备选结果很大时,效率很低的。同时可以考虑使用exsit替代in
------解决方案--------------------
探讨
in 备选结果很大时,效率很低的。同时可以考虑使用exsit替代in

------解决方案--------------------
探讨
= 可以用索引
数量量大的时候就看的出

------解决方案--------------------
使用exists
不建议使用in 和not in
in会使用表扫描
------解决方案--------------------
帮顶啦!
=的效率高
------解决方案--------------------
==的效率高
------解决方案--------------------
当然是=号的效率高 数据多了 就知道效果了
------解决方案--------------------
同上各个楼层的
------解决方案--------------------
探讨
in 备选结果很大时,效率很低的。同时可以考虑使用exsit替代in

------解决方案--------------------
个人觉得in和=效果差不多
select * from B where cc in (select cc from A) ;
假如:select cc from A就只有2个值1,2
oracle会把上面的语句变成
select * from B where cc=1 or cc=2;

如果B表上cc列有索引,2条语句都能使用索引
效率上select * from B where cc=1 or cc=2;略高些,也就高在将select * from B where cc in (select cc from A) ;的过程转为select * from B where cc=1 or cc=2;
  相关解决方案