Indeksy i Optymalizacja Zapytań

Autor: coach1

Optymalizacja bazy: Jak działają indeksy?

Gdy Twoja tabela z użytkownikami urośnie do miliona rekordów, proste zapytanie SELECT może nagle zacząć wykonywać się kilka sekund. W świecie aplikacji internetowych to wieczność, która zniechęca użytkowników i obciąża procesor serwera. Rozwiązaniem tego problemu są indeksy.

Czym jest indeks w bazie danych?

Wyobraź sobie indeks w bazie jako alfabetyczny spis treści na samym końcu grubej książki. Zamiast czytać całą książkę strona po stronie (co w świecie SQL nazywamy skanowaniem całej tabeli - Table Scan), sprawdzasz w spisie, na której stronie znajduje się interesujące Cię hasło, i od razu tam przechodzisz. W bazie danych indeks to specjalna, uporządkowana struktura danych (najczęściej w formie tzw. B-drzewa), która przechowuje wartości wybranej kolumny wraz z szybkimi wskaźnikami do fizycznych wierszy w tabeli.

Kiedy używać, a kiedy unikać indeksów?

  • Zalety: Drastycznie i zauważalnie przyspieszają operacje wyszukiwania (SELECT) oraz ułatwiają silnikowi bazy danych szybkie sortowanie (ORDER BY) i grupowanie wyników (GROUP BY).
  • Wady: Spowalniają wszystkie operacje modyfikacji danych (INSERT, UPDATE, DELETE). Dzieje się tak, ponieważ przy każdej zmianie w tabeli, silnik bazy musi w tle zaktualizować również strukturę indeksu. Ponadto zajmują one dodatkowe miejsce na dysku.

Złota zasada optymalizacji: Indeksujemy zawsze klucze obce oraz te kolumny, po których najczęściej filtrujemy dane (czyli te, które regularnie lądują w klauzuli WHERE), np. adres e-mail przy logowaniu do systemu.


Miejsce na baner reklamowy Google AdSense w treści artykułu