Jeśli sama tabela jest klastrowana , wszystkie indeksy pomocnicze zawierają kopię klucza klastrowania (klucza, który określa fizyczną kolejność wierszy w tabeli klastrowanej).
Powód:wiersze w tabeli klastrowej są fizycznie przechowywane w B-drzewie (nie stercie tabeli), a zatem mogą przenosić się gdy węzły B-drzewa zostaną podzielone lub połączone, więc indeks wtórny nie może zawierać tylko „wskaźnika” wiersza (ponieważ groziłoby to „zawieszeniem” po przesunięciu wiersza).
Często ma to szkodliwy wpływ na wydajność — zapytania za pomocą indeksu dodatkowego mogą wymagać podwójnego wyszukiwania :
- Najpierw przeszukaj indeks pomocniczy i uzyskaj klucz klastrowania.
- Po drugie, w oparciu o klucz klastrowania pobrany powyżej, przeszukaj samą tabelę klastrowaną (która jest B-drzewo).
Jeśli jednak potrzebujesz tylko pól klucza klastrowania, potrzebne jest tylko pierwsze wyszukiwanie.
Aka „indeks klastrowy” w MS SQL Server.
Zwykle, ale niekoniecznie, KLUCZ PODSTAWOWY w MS SQL Server.
To niefortunne, że klastrowanie jest domyślnie włączone w MS SQL Server - ludzie często po prostu zostawiają to domyślne, nie biorąc w pełni pod uwagę jego skutków. Gdy klastrowanie nie jest odpowiednie, należy jawnie określić słowo kluczowe NONCLUSTERED, aby je wyłączyć.