Różnice
-
KLUCZ lub INDEKS odnosi się do normalnego nieunikalnego indeksu. Dozwolone są różne wartości indeksu, więc indeks może zawierają wiersze o identycznych wartościach we wszystkich kolumnach indeksu. Indeksy te nie wymuszają żadnych ograniczeń dotyczących Twoich danych, więc są używane tylko w celu uzyskania dostępu - do szybkiego dotarcia do określonych zakresów rekordów bez skanowania wszystkich rekordów.
-
UNIKALNE odnosi się do indeksu, w którym wszystkie wiersze indeksu muszą być unikatowe. Oznacza to, że ten sam wiersz może nie mieć identycznych wartości innych niż NULL dla wszystkich kolumn w tym indeksie, co inny wiersz. Indeksy UNIQUE mogą być używane nie tylko do szybkiego osiągania określonych zakresów rekordów, ale także do egzekwowania ograniczeń danych, ponieważ system bazy danych nie pozwala na złamanie reguły odrębnych wartości podczas wstawiania lub aktualizowania danych.
Twój system bazy danych może zezwalać na zastosowanie indeksu UNIQUE do kolumn, które dopuszczają wartości NULL, w którym to przypadku dwa wiersze mogą być identyczne, jeśli oba zawierają wartość NULL (powodem jest to, że NULL jest uważany za nierówny sobie). Jednak w zależności od aplikacji możesz uznaj to za niepożądane:jeśli chcesz temu zapobiec, nie zezwalaj na wartości NULL w odpowiednich kolumnach.
-
PODSTAWOWA działa dokładnie jak indeks UNIQUE, z tą różnicą, że zawsze ma nazwę „PRIMARY” i może być tylko jeden w tabeli (a tam powinien zawsze bądź jednym; chociaż niektóre systemy baz danych tego nie wymuszają). Indeks PRIMARY jest przeznaczony jako podstawowy środek do jednoznacznej identyfikacji dowolnego wiersza w tabeli, więc w przeciwieństwie do UNIQUE nie powinien być używany w żadnych kolumnach, które zezwalają na wartości NULL. Twój indeks PRIMARY powinien znajdować się w najmniejszej liczbie kolumn, która jest wystarczająca do jednoznacznej identyfikacji wiersza. Często jest to tylko jedna kolumna zawierająca unikalną automatycznie zwiększaną liczbę, ale jeśli jest coś, co może jednoznacznie identyfikować wiersz, na przykład „kod kraju” na liście krajów, możesz użyć tego zamiast.
Niektóre systemy baz danych (takie jak InnoDB MySQL) przechowują rekordy tabeli na dysku w kolejności, w jakiej pojawiają się w indeksie PRIMARY.
-
PEŁNOTEKSTOWY indeksy różnią się od wszystkich powyższych, a ich zachowanie różni się znacznie między systemami baz danych. Indeksy FULLTEXT są przydatne tylko w przypadku wyszukiwania pełnotekstowego wykonywanego za pomocą klauzuli MATCH() / AGAINST(), w przeciwieństwie do powyższych trzech - które są zazwyczaj implementowane wewnętrznie przy użyciu b-drzew (pozwalając na zaznaczanie, sortowanie lub zakresy zaczynając od skrajnej lewej kolumny) lub tablice mieszające (pozwalające na wybór zaczynając od skrajnej lewej kolumny).
Tam, gdzie inne typy indeksów są ogólnego przeznaczenia, indeks FULLTEXT jest wyspecjalizowany, ponieważ służy do wąskiego celu:jest używany tylko do funkcji „pełnotekstowego wyszukiwania”.
Podobieństwa
-
Wszystkie te indeksy mogą zawierać więcej niż jedną kolumnę.
-
Z wyjątkiem FULLTEXT, kolejność kolumn jest istotna:aby indeks był użyteczny w zapytaniu, zapytanie musi używać kolumn z indeksu zaczynając od lewej - nie może używać tylko drugiej, trzeciej lub czwartej części indeks, chyba że używa również poprzednich kolumn w indeksie do dopasowania wartości statycznych. (Aby indeks FULLTEXT był użyteczny dla zapytania, zapytanie musi zawierać all kolumny indeksu.)