Istnieje kilka pojęć i terminów, które należy zrozumieć, posługując się indeksami. Wyszukiwanie, skanowanie i wyszukiwanie to tylko niektóre ze sposobów wykorzystania indeksów za pomocą instrukcji select. Selektywność kluczowych kolumn jest niezbędna do określenia skuteczności indeksu.
Wyszukiwanie ma miejsce, gdy Optymalizator kwerend programu SQL Server ustali, że najlepszym sposobem na znalezienie żądanych danych jest skanowanie zakresu w ramach indeksu. Wyszukiwanie zwykle ma miejsce, gdy zapytanie jest „objęte” indeksem, co oznacza, że predykaty wyszukiwania znajdują się w kluczu indeksu, a wyświetlane kolumny są albo w kluczu, albo włączone. Skanowanie ma miejsce, gdy Optymalizator kwerend programu SQL Server ustali, że najlepszym sposobem na znalezienie danych jest skanowanie całego indeksu, a następnie filtrowanie wyników. Wyszukiwanie zwykle występuje, gdy indeks nie obejmuje wszystkich żądanych kolumn, ani w kluczu indeksu, ani w uwzględnionych kolumnach. Optymalizator zapytań użyje następnie klucza klastrowego (w stosunku do indeksu klastrowego) lub RID (w stosunku do sterty), aby „przeszukać” pozostałe żądane kolumny.
Zwykle operacje wyszukiwania są bardziej wydajne niż skanowanie, ponieważ fizycznie wykonują zapytania do mniejszego zestawu danych. Są sytuacje, w których tak nie jest, na przykład bardzo mały początkowy zestaw danych, ale wykracza to poza zakres pytania.
Teraz zapytałeś, jak określić skuteczność indeksu, i musisz pamiętać o kilku kwestiach. Kolumny klucza indeksu klastrowego nazywane są kluczem klastrowym. W ten sposób rekordy są unikalne w kontekście indeksu klastrowego. Wszystkie indeksy nieklastrowane będą domyślnie zawierać klucz klastrowany, aby w razie potrzeby wyszukiwać. Wszystkie indeksy zostaną wstawione, zaktualizowane lub usunięte z każdej odpowiedniej instrukcji DML. To powiedziawszy, najlepiej zbilansować wzrost wydajności w wybranych instrukcjach z uderzeniami wydajności w instrukcjach wstawiania, usuwania i aktualizacji.
Aby określić skuteczność indeksu, należy określić selektywność kluczy indeksu. Selektywność można zdefiniować jako procent odrębnych rekordów w stosunku do rekordów ogółem. Jeśli mam tabelę [osoba] zawierającą 100 rekordów, a kolumna [imię] zawiera 90 różnych wartości, możemy powiedzieć, że kolumna [imię] jest selektywna w 90%. Im wyższa selektywność, tym bardziej wydajny jest klawisz indeksu. Mając na uwadze selektywność, najlepiej umieścić swoje najbardziej selektywne kolumny na pierwszym miejscu w kluczu indeksu. Korzystając z mojego poprzedniego przykładu [person], co gdybyśmy mieli kolumnę [nazwisko], która była w 95% selektywna? Chcielibyśmy utworzyć indeks z [last_name], [first_name] jako kluczem indeksu.
Wiem, że to była dość długa odpowiedź, ale tak naprawdę jest wiele rzeczy, które decydują o skuteczności indeksu, i wiele rzeczy, z którymi musisz się liczyć, jeśli chodzi o wzrost wydajności.