Spis treści

Indeksy

Autor: Marcin Kasiński
21.01.2011 13:24:00 +0200

Indeks jest specjalna struktura mającą na celu przyspieszenie operacji odczytu danych z tabel. Indeksy zakłada się na kolumnie lub kilku kolumnach tabeli. Założenie takiego indeksu oznacza, że powstanie specjalna struktura, którą możemy porównać z indeksem w książce, gdzie w szybki sposób przeglądając indeks w poszukiwania słowa mamy dostęp do informacji, gdzie w książce znajduje się poszukiwane słowo. Indeks w zdecydowany sposób przyspiesza dostęp do danych w tabeli jeśli selektywność jest niska ( w odpowiedzi na zapytanie zwracana mala ilość danych ). Zaleca się stosowanie indeksu w przypadku zwracania do ok. 5% rekordów tabeli. Kiedy selektywność jest wyższa (powyżej 5%).

Rodzaje indeksów

Indeksy można podzielić na dwa główne typy, indeksy b-drzewa oraz indeksy bitmapowe.

Indeksy b-drzewa

Indeksy b-drzewa do wyszukiwania położenia rekordów stosuje się strukturę podobna do odwróconego drzewa. Na samej górze tego drzewa znajduje się korzeń, poniżej są poziomy z gałęziami, a na samym dole znajdują się liście zawierające informacje o położeniu rekordu bądż rekordów w tabeli.

Indeksy bitmapowe

Indeks bitmapowy działa zupełnie inaczej niż indeks b-drzewa. Jest on najlepszy w przypadku niskiej selektywności. Dla przykładu kolumna z wartościami 1 lub 0 nadaje się do założenia na niej indeks bitmapowy. Informacje przechowywane w takim indeksie są w postaci mapy bitów dla każdej wartości występującej w danej kolumnie. Główną zaletą takich indeksów jest to, że bardzo łatwo takie mapy bitów można łączyć. Przykładem takiego efektywnego wykorzystania indeksów jest sytuacja, kiedy kilka wartości o malej selektywności może być połączonych w złączenie o wysokiej selektywności.

Tabele zorganizowane obiektowo

Tabele zorientowane obiektowo są bardzo podobne do indeksów b-drzewa. Zasadnicza różnica polega na tym, że w liściu nie znajduje się adres ROWID, a właściwe dane. Zaletą takiego rozwiązania jest to, że ograniczamy tu ilość operacji wejścia-wyjścia. W przypadku zwykłych indeksów najpierw przeszukujemy indeks, a potem dopiero pobieramy dane z tabeli znajdujące się pod wskazanym adresem. Tutaj, w przypadku tabel zorientowanych obiektowo przeszukujemy tylko jeden raz.

Indeksy oparte na funkcjach

Indeksy oparte na funkcjach stanowią specyficzną odmianę indeksów b-drzewa. Różnica polega na tym, ze zamiast wartości kolumn w indeksie zapisane są rezultaty funkcji podanej podczas tworzenia indeksu. Takie indeksy są efektywne, kiedy mamy zapytanie SQL, gdzie w klauzuli where występuje funkcja.

Przykład:

SELECT * from users where current_sales- last_sales > 0;

Dla takiego zapytania możemy stworzyć indeks poleceniem: Create index ind_sales on users (current_sales- last_sales);


powrót
Zachęcam do przedstawienia swoich uwag i opinii w polu komentarzy.

Komentarze

Dodaj Komentarz