我在SQL Server 2012中有以下查询:
Select cat, dog, ant, pig, ItemId
from dbo.Animals
where cat <> 'sam'
and cat in ('bam', 'dam')
order by pig
我在下面做了说明,并在下面查看了执行计划和执行时间。
无索引-表格扫描-20 s
ItemId上的聚集索引-聚集索引扫描-20 s
猫上的非聚集索引-聚集索引扫描[与2相同-20s
猪的非聚集索引-聚集索引扫描[与2相同-20s
我的问题是为什么在所有情况下性能都一样?
缓存在起作用吗?我无权使用释放缓存和当前类似的功能。我可以从索引角度尝试其他方法吗?
答案 0 :(得分:0)
您的where
是多余的,因为cat
上的条件仅需要in
。
我怀疑索引可以用于where
子句,但不能用于order by
。因此,索引可用于优化对行的搜索,但不能用于最终排序。大概有大量数据,这要花费大量时间。