Ред на сортиране на индекс, Microsoft Docs
Когато дефинирате индекси, имайте предвид, че данните в колоната с ключови индекси се съхраняват във възходящ или низходящ ред. По подразбиране сортирането е във възходящ ред, както в предишните версии на SQL Server. Синтаксисът на израза CREATE INDEX, CREATE TABLE и ALTER TABLE поддържа ключовите думи ASC (възходящо) и DESC (низходящо) за конкретни колони в индекси и ограничения.
Указването на реда, в който ключовите стойности се съхраняват в индекс, е полезно, когато заявка препраща към таблица с клауза ORDER BY, указваща различна посока за колона с ключ на индекс или индексирана колона. В този случай индексът може да елиминира необходимостта от оператор SORT в плана на заявката, което означава, че заявката ще се изпълнява много по-ефективно. Например, клиент в отдела за поръчки на Adventure Works Cycles трябва да определи качеството на стоките от различни доставчици. Най-вече той се интересува от продуктите на тези доставчици, които имат най-висок процент на отказ. Както е показано в следната заявка, извличането на данни, които отговарят на този критерий, изисква колоната RejectedQty в таблицата Purchasing.PurchaseOrderDetail да бъде сортирана в низходящ ред (от най-голямото към най-малкото), а колоната ProductID да е сортирана във възходящ ред (от най-ниското към най-голямото).
Следният план за изпълнение за тази заявка показва, че оптимизаторът на заявки прилага оператора SORT към набора от резултати в реда, определен от клаузата ORDER BY.
Ако се създаде индекс върху ключови колони, който съответства на индекса, определен в клаузата ORDER BY, операторът SORT може да бъде пропуснат от плана на заявката, което значително подобрява ефективността му.
След повторно изпълнение на заявката, планът за изпълнениепоказва, че операторът SORT е пропуснат и се използва новосъздаден неклъстъриран индекс.
Database Engine работи еднакво добре и в двете посоки. Индекс, дефиниран като (RejectedQty DESC, ProductID ASC), може също да се използва в заявки с ред на сортиране, който е обратен на реда, определен в клаузата ORDER BY. Например, заявка със следния ORDER BY-: ORDER BY RejectedQty ASC, ProductID DESC може да използва този индекс.