SQL Server性能问题

时间:2018-11-09 21:51:32

标签: sql sql-server-2012 performance-testing query-performance

我在SQL Server 2012中有以下查询:

Select cat, dog, ant, pig, ItemId 
from dbo.Animals 
where cat <> 'sam' 
  and cat in ('bam', 'dam') 
order by pig

我在下面做了说明,并在下面查看了执行计划和执行时间。

  1. 无索引-表格扫描-20 s

  2. ItemId上的聚集索引-聚集索引扫描-20 s

  3. 猫上的非聚集索引-聚集索引扫描[与2相同-20s

  4. 猪的非聚集索引-聚集索引扫描[与2相同-20s

我的问题是为什么在所有情况下性能都一样?

缓存在起作用吗?我无权使用释放缓存和当前类似的功能。我可以从索引角度尝试其他方法吗?

1 个答案:

答案 0 :(得分:0)

您的where是多余的,因为cat上的条件仅需要in

我怀疑索引可以用于where子句,但不能用于order by。因此,索引可用于优化对行的搜索,但不能用于最终排序。大概有大量数据,这要花费大量时间。