关于datetime字段查询使用不到索引的问题。
表a中字段col是datetime,该字段上建立 了索引
select * from a where col = '2012-5-23',返回结果只有12条,但执行计划中看到的竟然是clustered index scan,并没有使用该字段索引,这是为什么,请高手指点,先谢了。注表中数据有几千行
[解决办法]
非覆盖查询不走索引很正常,因为索引没有包含所有数据,其它数据要从Clustered里面读取。
SQL会根据索引评估返回的行数,如果超过一定的数值(大概3-4%左右),SQL会认为数据平均分布在Clustered各页,这时无疑直接clustered index scan是更好的选择。
[解决办法]
n查询select col 是否使用索引呢?
[解决办法]
对于查全部的数据,走索引其实意义不大了。限制数据的返回数量,如加where语句。然后尽量走聚集索引,因为聚集索引包含了数据表本身。这样已经很高效了。也没必要非要追求聚集索引、索引查找。