WŁAŚCIWOŚCI INDEXÓW
Index bez powtórzeń Indeksy złożone
Kolumny, które należy indeksować Kolumny których nie należy indeksować



Aby rozszerzyć możliwości indeksu, możliwe jest, poza podaniem typu, określenie także jego charakterystyki. Indeksy bez powtórzeń zapewniają, że dane w indeksowanych kolumnach są unikalne. Jeśli w tabeli, w trakcie realizacji poleceń CREATE TABLE i ALTER TABLE, zdefiniowano ograniczenie PRIMARY KEY lub UNIQUE, to serwer SQL Server tworzy indeks bez powtórzeń automatycznie. W indeksach złożonych wartością kluczową jest grupa kolumn. Użycie indeksu złożonego może zwiększyć wydajność kwerend i zredukować ilość indeksów tworzonych w tabeli.

Index bez powtórzeń

Indeks bez powtórzeń zapewnia, że wszystkie dane w indeksowanej kolumnie są unikalne i nie zawierają powtarzających się wartości.

Zapewnienie unikalności danych w indeksowanej kolumnie

Indeks bez powtórzeń powinien być tworzony dla indeksów zgrupowanych i niezgrupowanych wtedy, gdy dane ze swej natury są unikalne. Jeśli jednak unikalność powinna być wymuszana, należy utworzyć dla kolumny ograniczenie PRIMARY KEY lub UNIQUE, a nie indeks bez powtórzeń.


Przy tworzeniu indeksu bez powtórzeń należy zwrócić uwagę na następujące fakty i zalecenia:


    • Jeśli tabela zawiera dane, to w czasie tworzenia indeksu SQL Server kontroluje występowanie powtarzających się wartości.
    • SQL Server automatycznie tworzy indeksy bez powtórzeń dla kolumn, dla których zdefiniowano ograniczenia PRIMARY KEY lub UNIQUE.
    • Występowanie powtarzających się wartości sprawdzane jest przez SQL Server przy każdym użyciu instrukcji INSERT i UPDATE. Jeśli pojawią się powtórzone wartości, to SQL Server anuluje instrukcję i zwróci komunikat o błędzie ze wskazaniem pierwszego powtórzenia.
    • Należy zapewnić unikalność wartości we wszystkich wierszach-w żadnym z wierszy nie może powtórzyć się na przykład taki sam numer identyfikacyjny, jeśli oczywiście indeks bez powtórzeń utworzono na takiej kolumnie. Zapewnia to unikalną identyfikację każdej kolumny.
    • Indeks bez powtórzeń powinien być tworzony tylko dla kolumn, dla których integralność kolejnych pozycji może być wymuszona. Przykładowo, nie należy tworzyć indeksu bez powtórzeń dla kolumny nazwisko tabeli czytelnik, ponieważ kilku członków może mieć takie samo nazwisko.

Indeksy złożone

Indeks złożony wykorzystuje do indeksowania danych więcej niż jedną kolumnę tabeli.

Przeszukiwanie dwu lub więcej kolumn jako całości

Indeksy złożone należy tworzyć, gdy przeszukiwanie kilku kolumn jako całości jest lepszym rozwiązaniem. Indeks taki należy tworzyć także wtedy, gdy kwerendy odwołują się jedynie do kolumn w tym indeksie. Przykładowo, książka telefoniczna jest dobrym przykładem, w którym indeks złożony może być użyteczny. Książka ta jest ułożona według nazwisk. W obrębie nazwiska układana jest ona według imion, ponieważ pozycje o takim samym nazwisku występują dość często.


Przy tworzeniu indeksu złożonego należy zwrócić uwagę na następujące fakty i zalecenia:


  • Jeden indeks złożony może składać się maksymalnie z 16 kolumn. Suma długości kolumn składających się na indeks złożony nie może przekroczyć 900 bajtów.
  • Wszystkie kolumny w indeksie złożonym muszą należeć do jednej tabeli.
  • Jako pierwsza powinna być wskazana kolumna najbardziej unikalna. Pierwsza kolumna zdefiniowana w instrukcji CREATE INDEX traktowana jest jako podstawowy porządek sortowania.
  • Klauzula WHERE w kwerendzie musi odwoływać się do pierwszej kolumny indeksu złożonego, aby optymalizator kwerend wykorzystał ten indeks.
  • Indeks na (kol1, kol2) nie jest tym samym co indeks na (kol2, kol1)-mają one różne kolejności kolumn. Kolumna zawierająca bardziej unikalne dane lub zwracająca mniejszą część wierszy zwykle narzuca kolejność kolumn. W pewnych sytuacjach korzystne jest utworzenie dwóch indeksów złożonych, z różną kolejnością tych samych kolumn.
  • Indeksy złożone są użyteczne w tabelach z wieloma kolumnami kluczowymi.


Poniższy przykład tworzy niezgrupowany, złożony indeks w tabeli wypozyczenia. Kolumny isbn i nr_kopii zawierają złożone wartości kluczowe. Należy zauważyć, że kolumna isbn została wymieniona jako pierwsza, gdyż zawiera bardziej unikalne wartości niż kolumna nr_kopii.


USE biblioteka CREATE INDEX ident_wypozyczenia ON wypożyczenia (isbn, nr_kopii)

Zasady stosowania indeksów.

Środowisko firmy, charakterystyka oraz wykorzystanie danych determinuje, jakie kolumny należy wybrać do tworzenia indeksów. Użyteczność indeksów jest bezpośrednio związana z procentową częścią wierszy zwracanych przez kwerendę. Mały procent i duża rozróżnialność zapewniają lepszą efektywność.

Kolumny, które należy indeksować
Przy podejmowaniu decyzji o wyborze kolumn do indeksowania należy wziąć pod uwagę następujące zalecenia:


  • Indeks dla klucza podstawowego należy tworzyć definiując ograniczenie PRIMARY KEY.
  • Indeks należy tworzyć dla klucza zewnętrznego i kolumn często wykorzystywanych przy łączeniu tabel.
  • Indeks należy tworzyć dla kolumn wykorzystywanych przy wyszukiwaniu przedziałów wartości.
  • Indeks należy tworzyć dla kolumn, z których pobiera się posortowane dane.
  • Indeks należy tworzyć dla kolumn, które są często przeszukiwane.



Kolumny których nie należy indeksować


  • Kolumny, do których kwerendy rzadko się odwołują.
  • Kolumny zawierające mało unikalnych wartości. Przykładowo, indeks na kolumnie z dwoma wartościami, mężczyzna i kobieta, zwraca zawsze dużą część wierszy.
  • Kolumny zdefiniowane z typem danych bit, text i image. Te typy danych nie mogą być indeksowane.


na górę Strona główna