Неявный заказ Sql Server By в плане выполнения - PullRequest
2 голосов
/ 16 марта 2011

Когда я смотрю на план выполнения для запроса SELECT, я часто замечаю, что в него загружаются CPU.Проблема в том, что в моем запросе нет порядка по, и похоже, что причина сортировок - возрастающий / убывающий порядок, установленный для столбца индекса, используемого в запросе.

Почему это происходит, и можно ли его отключить (и я должен)?

Ответы [ 2 ]

3 голосов
/ 16 марта 2011

В SQL Server существует довольно много операций, которые могут привести к добавлению сортировки в план без указания ORDER BY в запросе.

DISTINCT и UNION приведут к сортировкеизбавиться от дубликатов.

GROUP BY может потребовать sort в столбце GROUP BY, если план имеет агрегат потока, а не агрегат хеша, и нет подходящего индекса, который возвращает требуемые данные предварительно.-sorted.

Итератор сегмента (используемый для функций ранжирования) требует, чтобы его входные данные были отсортированы по столбцу сегмента.

У вас есть конкретный пример?

2 голосов
/ 16 марта 2011

Результат сортируется с использованием индекса автоматически. Вы можете указать порядок по пункту.
Это цель индекса, сортировка данных для быстрого поиска строк.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...