Вопросы производительности SQL Server - PullRequest
0 голосов
/ 10 ноября 2018

У меня есть этот запрос в 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 с

  2. Кластерный индекс на ItemId - Сканирование кластерного индекса - 20 с

  3. Некластерный индекс на кошке - сканирование кластерного индекса [То же, что 2] - 20 с

  4. Некластерный индекс на свинье - Сканирование кластерного индекса [То же, что 2] - 20 с

Мои вопросы: почему производительность одинакова во всех сценариях?

Кэширование играет фактор? У меня нет разрешения играть с освобождением кеша и тому подобными вещами. Могу ли я попробовать что-нибудь еще с точки зрения индексации?

1 Ответ

0 голосов
/ 10 ноября 2018

Ваш where является избыточным, потому что условия cat требуют только in.

Я подозреваю, что индекс можно использовать для предложения where, но не для order by. Следовательно, индексы могут использоваться для оптимизации поиска строк, но не для окончательного упорядочения. Предположительно существует большое количество данных, и это занимает большую часть времени.

...