Индекс базы данных работает в обратном порядке? - PullRequest
4 голосов
/ 24 мая 2011

Учитывая пример таблицы базы данных:

ID
Name
DateOfBirth

Скажем, я хотел создать индекс на дату рождения, я мог бы добавить индекс на DateOfBirth ascending.Если мой код теперь запрашивает возрастание DOB, он будет работать хорошо и быстро.

Однако достаточно ли интеллектуальны базы данных, чтобы использовать индекс в обратном порядке, т. Е. Если бы я запросил orderby DateOfBirth descending, он все еще мог бы использоватьэтот индекс, или я должен создать другой специально для убывания порядка?

1 Ответ

6 голосов
/ 24 мая 2011

Индексные страницы образуют двусвязный список, как показано ниже, с указателями как на следующую, так и на предыдущую страницу.

enter image description here

Таким образом, SQL Server может проходить индекс как вперед, так и назад. Направление сканирования отображается в свойствах плана выполнения .

Где значение Asc / Desc становится важным в составных индексах.

Если индекс был определен как ID ASC, Name ASC, DateOfBirth ASC, то для запроса все еще потребуется сортировка, например, ORDER BY ID ASC, Name DESC, DateOfBirth ASC.

Обратите внимание, что у вас может быть больше составных индексов, чем вы думаете, а также неуникальный некластеризованный индекс будет иметь добавленное к ключу значение ключа кластеризованного индекса .

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