Jaki jest skutek wykonania polecenia CREATE INDEX idx_nazwisko ON klienci (nazwisko); w bazie MySQL?
idx_nazwisko to nazwa indeksu; kolumnę dodaje ALTER TABLE ... ADD.CREATE INDEX buduje indeks na kolumnie, co przyspiesza wyszukiwanie i sortowanie.PRIMARY KEY, a nie zwykły indeks.CREATE UNIQUE INDEX.CREATE INDEX zakłada indeks, czyli dodatkową, uporządkowaną strukturę danych zbudowaną na wskazanej kolumnie. Dzięki niej serwer odnajduje wiersze z danym nazwiskiem bez przeglądania całej tabeli, więc szybciej działają zapytania w rodzaju SELECT * FROM klienci WHERE nazwisko = 'Nowak'; i sortowanie ORDER BY nazwisko. idx_nazwisko to tylko nazwa indeksu.
Indeks nie zmienia danych ani struktury kolumn. Jego koszt to miejsce na dysku i nieco wolniejsze INSERT oraz UPDATE, bo indeks trzeba aktualizować. Dlatego zakłada się go na polach często wyszukiwanych lub sortowanych. Wersja CREATE UNIQUE INDEX dodatkowo blokowałaby powtórzenia.
Dzięki temu duże tabele odpowiadają na zapytania znacznie szybciej.
Kto wybiera nową kolumnę, bierze idx_nazwisko za nazwę pola. To jednak nazwa samego indeksu, a kolumnę dodaje się poleceniem ALTER TABLE klienci ADD .... Po wykonaniu CREATE INDEX tabela ma dokładnie te same kolumny co przedtem.
Klucz podstawowy też jest indeksowany, ale ustawia się go klauzulą PRIMARY KEY przy tworzeniu tabeli albo przez ALTER TABLE ... ADD PRIMARY KEY. Nazwisko nadawałoby się na ten cel słabo, bo bywa powtarzalne.
Blokada duplikatów wymaga słowa UNIQUE. Zwykły indeks dopuszcza wiele wierszy z tym samym nazwiskiem i nie odrzuci drugiego klienta o nazwisku Nowak. Polecenie z treści zadania tylko przyspiesza wyszukiwanie po kolumnie nazwisko.
Indeks można porównać do skorowidza na końcu książki: ułatwia znalezienie właściwej strony, ale nie dopisuje nowych rozdziałów ani nie zmienia treści samej książki.