Być może zainteresuje Cię Pierwsza zasada programowania .
Indeks klastrowy zawsze zawiera wszystkie wiersze. Może być zamówiony przez z
, ale nadal będzie zawierać wszystkie inne kolumny na poziomie liścia.
Powodem, dla którego SQL Server czasami preferuje skanowanie klastrowe niż wyszukiwanie indeksu, jest ten. Kiedy wykonujesz wyszukiwanie indeksu, musisz po nim wykonać wyszukiwanie zakładek do indeksu klastrowego, aby pobrać kolumny, których nie ma w indeksie.
Podczas skanowania indeksu klastrowego z definicji można znaleźć wszystkie kolumny. Oznacza to, że nie jest wymagane wyszukiwanie zakładek.
Gdy SQL Server oczekuje wielu wierszy, stara się unikać wyszukiwania zakładek. To sprawdzony wybór. Wyszukiwanie indeksów nieklastrowanych jest rutynowo niszczone przez skanowanie indeksów klastrowych.
Możesz to przetestować w swoim przypadku, wymuszając albo za pomocą with (index(IX_YourIndex))
podpowiedź do zapytania
.