Cập nhật chỉ mục có hai lần.
Phần đầu tiên là chèn / cập nhật / xóa mục nhập vào / khỏi chỉ mục. Chỉ mục được cập nhật ngay sau khi bản ghi được thay đổi và quá trình này sẽ chặn truy vấn cho đến khi hoàn thành.
Điều này cho phép truy xuất nhanh hơn các bản ghi dựa trên một điều kiện trên cột được lập chỉ mục, mục đích được hiểu rõ nhất của chỉ mục.
Phần thứ hai là cập nhật số liệu thống kê của chỉ số. Điều này cho phép trình tối ưu hóa xác định xem đối với một truy vấn nhất định, nó thậm chí có giá trị sử dụng chỉ mục hay không. Hãy tưởng tượng một truy vấn như SELECT * FROM users WHERE disabled = 0
. Giả sử hầu hết người dùng trên thực tế đang hoạt động. Nếu thống kê chỉ mục được cập nhật, trình tối ưu hóa sẽ nhận ra rằng hầu hết các bản ghi từ bảng sẽ được trả về bởi truy vấn, bảng sẽ gần như hoàn toàn cần được quét. Nó có thể sẽ quyết định không sử dụng chỉ mục và quét bảng ngay lập tức.
Cập nhật này không diễn ra tự động ngoại trừ một số trường hợp rất cụ thể tình huống
. Các thống kê này phải được cập nhật thường xuyên theo cách thủ công với ANALYZE TABLE [table_name]