我在SQL Server 2012:中有这个查询
Select cat, dog, ant, pig, ItemId
from dbo.Animals
where cat <> 'sam'
and cat in ('bam', 'dam')
order by pig
我在下面列出了我所做的事情,并查看了下面的执行计划和执行时间。
无索引-表扫描-20秒
ItemId上的聚集索引-聚集索引扫描-20 s
cat上的非聚集索引-聚集索引扫描[与2]-20s 相同
清管器上的非聚集索引-聚集索引扫描[与2]-20s 相同
我的问题是,为什么所有场景中的性能都相同?
缓存是一个因素吗?我目前没有权限玩释放缓存之类的游戏。我可以从索引的角度尝试其他东西吗?
您的where
是多余的,因为cat
上的条件只需要in
。
我怀疑该索引可以用于where
子句,但不能用于order by
。因此,索引可以用于优化对行的搜索,但不能用于最终排序。大概有大量的数据,这占用了大部分时间。