当前位置: 代码迷 >> Sql Server >> 为何sql中IN 会遍历全表
  详细解决方案

为何sql中IN 会遍历全表

热度:83   发布时间:2016-04-24 20:38:14.0
为什么sql中IN 会遍历全表
为什么sql中IN会遍历全表

------解决方案--------------------
#1.IN的语法相当于多个OR的串连
#2.但不一定不起索引哦。示例,下面的两个语句,测试会走索引,且为INDEX SEEK
SELECT * FROM dbo.tab
WHERE name IN ('2555','29999')

SELECT * FROM dbo.tab
WHERE name = '2555'
OR name = '29999'
#3.一般情况下,当你IN中的条件太多,或是无法估计时,优化器倾向于全表扫描。当IN的条件少时,如果优化器认为,INDEX SEEK可以带来好处时,照样会走索引的。
------解决方案--------------------
你从100个人中找1个人和你从10000个人中找1个,当你找到第80个人是你想要找的人后,你会继续找下去吗?
如果说要扫描全表,那就得继续找下去了。
  相关解决方案