index jest struktura bazy danych, które mogą przyspieszyć dostęp do poszczególnych wierszy w bazie danych, podczas wyszukiwania opartego na polu (-ach) w indeksie.
W swoim przykładzie instrukcja CREATE INDEX
tworzy indeks o nazwie tags_tag
w tabeli tags
przy użyciu kolumny tag
. Jeśli chcesz wyszukać wiersze z tabeli na podstawie pola tag
, baza danych może użyć indeksu, aby bardziej efektywnie wyszukać wiersz. Bez indeksu baza danych może wymagać pełnego skanowania tabeli, co może potrwać znacznie dłużej (w zależności od wielu czynników, takich jak rozmiar tabeli, rozkład wartości, dokładne kryteria zapytania). Różne bazy danych obsługują również różne typy indeksów, które można wykorzystać do wyszukiwania danych na różne sposoby.
Istnieje także wada indeksów: dla każdego indeksu prędkości zapisu spadają dla tej tabeli. Jeśli wstawisz wiersz, posiadanie indeksu oznacza, że oprócz zapisu w bazie danych do samego wiersza, będzie on również musiał zaktualizować indeks.
Wybór kolumn do umieszczenia w indeksie może być trudny i jak zwykle testy porównawcze lub zapytania rzeczywistych danych rzeczywistych są najdokładniejszym sposobem pomiaru wydajności. Generalnie powinieneś chcieć indeksów w kolumnach, które będziesz szukał. Więc jeśli prawdopodobnie chcesz wyszukać wiersz przez tag
, to z pewnością warto umieścić tam indeks. Ale jeśli masz książkę adresową, nie musisz (prawdopodobnie) wyszukiwać na ulicy, kodzie pocztowym/kodzie pocztowym ani numerze telefonu, więc nie będzie warta wydajności zapisu.
Kolumny z kluczem podstawowym prawie zawsze zawierają indeks generowany automatycznie przez bazę danych. A jeśli chcesz, aby wartości konkretnej kolumny były niepowtarzalne, można utworzyć UNIQUE INDEX
, aby to wymusić.
This Pytanie SO pyta o reguły dla indeksów baz danych, które mogą być przydatne.
Co jest złego w ludziach, którzy zadają takie pytania? Jest to doskonale uzasadnione pytanie, a w rzeczywistości jest wielu ludzi, którzy * myślą *, że wiedzą wszystko o bazach danych i nie potrafią wyjaśnić, jak działa indeks. –