Indeks przyspiesza wyszukiwanie danych. Bez niego baza danych skanuje każdy wiersz w poszukiwaniu pasujących rekordów. Z indeksem przechodzi bezpośrednio do odpowiednich wierszy. Indeks to osobna struktura danych, która mapuje wartości na lokalizacje. Indeks książki działa w ten sam sposób. Wyszukujesz termin i znajdujesz numer strony. Nie czytasz każdej strony, aby go znaleźć. Baza danych robi to samo.
Indeksy mają swoją cenę. Zajmują miejsce. Spowalniają wstawianie, aktualizowanie i usuwanie, ponieważ indeks również musi być aktualizowany. Każdy zapis staje się droższy. Korzyścią jest szybszy odczyt. W przypadku obciążeń o dużej liczbie odczytów indeksy są niezbędne. W przypadku obciążeń o dużej liczbie zapisów zbyt wiele indeksów obniża wydajność. Wybór kolumn do indeksowania wymaga zrozumienia wzorców zapytań. Kolumny używane w klauzulach WHERE, warunkach JOIN i klauzulach ORDER BY są dobrymi kandydatami. Kolumny o niskiej kardynalności, takie jak flaga logiczna, są słabymi kandydatami, ponieważ indeks nie zawęża znacznie zakresu wyszukiwania. Indeksy złożone obejmują wiele kolumn i mogą obsługiwać zapytania filtrujące według kilku pól. Kolejność kolumn w indeksie złożonym ma znaczenie. Baza danych może używać indeksu złożonego do zapytań dotyczących kolumny wiodącej, ale nie tylko kolumn końcowych. Projekt indeksu jest kompromisem. Celem jest przyspieszenie zapytań, które mają znaczenie, bez spowalniania zapisu bardziej niż to konieczne.
Typy indeksów
- B-tree — domyślne dla większości baz danych, dobre dla zapytań zakresowych
- Hash — szybkie wyszukiwanie równości, brak obsługi zakresów
- Mapa bitowa — kolumny o niskiej kardynalności, zapytania analityczne
- Pełny tekst — wyszukiwanie tekstowe
- Kompozytowy — wiele kolumn w jednym indeksie
Indeks to skrót. Zamienia prędkość zapisu i przechowywania na prędkość odczytu. Używaj go tam, gdzie odczyty są najważniejsze.
Comments (3)
Leave a comment