Може да се интересувате от Първо правило за програмиране .
Клъстърираният индекс винаги включва всички редове. Може да бъде подредено по z
, но пак ще съдържа всички други колони на ниво лист.
Причината, поради която SQL Server понякога предпочита клъстерно сканиране пред търсене на индекс, е следната. Когато извършвате търсене в индекс, трябва да го последвате с търсене в отметка към клъстерния индекс, за да извлечете колони, които не са в индекса.
Когато правите сканиране на клъстерен индекс, вие по дефиниция намирате всички колони. Това означава, че не е необходимо търсене на отметки.
Когато SQL Server очаква много редове, той се опитва да избегне търсенето на отметки. Това е изпитан във времето избор. Търсенето на неклъстерен индекс рутинно се изпреварва от сканиране на клъстерен индекс.
Можете да тествате това за вашия случай, като принудите или с with (index(IX_YourIndex))
подсказка за заявка
.