Aktualizacje indeksów są dwojakie.
Pierwsza część to wstawianie/aktualizowanie/usuwanie wpisu do/z indeksu. Indeks jest aktualizowany natychmiast po zmianie rekordu, a proces ten blokuje zapytanie do momentu zakończenia.
Pozwala to na szybsze wyszukiwanie rekordów na podstawie warunku w indeksowanej kolumnie, co jest najbardziej zrozumiałym celem indeksu.
Druga część to aktualizacja statystyk indeksu. Dzięki temu optymalizator może określić, czy dla danego zapytania warto w ogóle korzystać z indeksu. Wyobraź sobie zapytanie, takie jak SELECT * FROM users WHERE disabled = 0
. Załóżmy, że większość użytkowników jest w rzeczywistości aktywna. Jeśli statystyki indeksów są aktualne, optymalizator zda sobie sprawę, że większość rekordów z tabeli zostanie zwrócona przez zapytanie, a tabelę prawie w całości trzeba będzie przeskanować. Prawdopodobnie zdecyduje się nie używać indeksu i od razu zeskanuje tabelę.
Ta aktualizacja nie odbywa się automatycznie z wyjątkiem bardzo konkretnych sytuacje
. Statystyki te powinny być regularnie aktualizowane ręcznie za pomocą ANALYZE TABLE [table_name]