sql2012,返回数据多时不走索引

数据达到一定值时,都会走表扫描
旧版如SQL2005时就有计算选择性的比例为 满足条件的行数/总行数<=0.7181,会走索引,其它会走表扫描
有兴趣可以自己去同版本中去测试


Roy Wu(吴熹Blog)(微博)

 

这个是按照行数来算比例的,是按照成本来的。一行长度10字节,和一行长度1000字节,这个行数比例就一样。

一般来说,行数比例达到0.01,肯定就是表扫描了(如果索引覆盖的话)


想时已是想,想都想。

Sorry记错了,十年前曾简单测过一下,0.7181%测试的结果值,这个选择点低于 1%,同的SQL版本和表的结构同可会有所同 对依赖于查询选择性的执行计划,查询的效率决于选择性,会为每一行执行lookup.在一些选择点上优化器会认为表扫描更高效 

posted @ 2017-12-11 17:38  有梦就能实现  阅读(244)  评论(0编辑  收藏  举报