Bazy danych
Indeksy można klasyfikować w różny sposób. My podzielimy indeksy na dwie grupy:
• indeksy grupowane (klastrowe),
• indeksy niegrupowane (nieklastrowe).
Indeksy grupowane (ang. clustered)
Indeks grupowany działa na podobnej zasadzie jak książka telefoniczna. Zawiera strony szybkiego dostępu do danych (w książce telefonicznej na początku znajduje się alfabetyczny spis mówiący o tym, na której stronie szukać nazwisk, firm czy instytucji zaczynających się na daną literę alfabetu). Strony te są ułożone w odwrócone drzewo i przechowują tylko ułożone alfabetycznie wartości indeksowanego pola oraz wskaźniki do stron znajdujących się w niższej warstwie drzewa.
Na samym dole drzewa znajdują się strony zawierające posortowane wg indeksowanego pola dane (w książce telefonicznej zawartość też jest posortowana - wg nazwisk lub nazw firm czy instytucji).
Przeszukiwanie indeksu odbywa się z góry na dół na następującej zasadzie: porównywana jest szukana wartość pola indeksowanego z wartościami zapisanymi (i posortowanymi) na stronach indeksu - jeśli znajdzie się wartość "większa" od wartości szukanej, wtedy następuje skok jeden poziom niżej do strony wskazywanej przez ostatnią pozycję (na ostatnio sprawdzej stronie), która nie była "większa" od szukanej wartości.
Każda pozycja na stronach zawiera wskaźnik do strony danych jeden poziom niżej w hierarchii indeksu. Dzięki takiej strukturze przeszukiwane są tylko wybrane strony z danymi, nie zaś wszystkie strony zawierające dane z wybranej tabeli.
W indeksie grupowanym strony z danymi wchodzą w skład indeksu i są posortowane po tym polu tabeli, które jest indeksowane. Wynika z tego, że na indeks grupowany należy przeznaczyć więcej miejsca na dysku niż na same dane (posortowane dane + strony indeksu z najwyższych warstw).
W związku z przedstawioną powyżej zasadą działania indeksów nie wszystkie zapytania wykorzystują indeksy. Np. zapytanie (w MS SQL Server)
SELECT imię, nazwisko FROM osoby WHERE nazwisko LIKE ' %mar%'
nie wykorzysta indeksu na polu nazwisko, ponieważ niemożliwe będzie porównanie wartości wzorca z wartościami na stronach indeksu.