Las actualizaciones de índices son dobles.
La primera parte es insertar/actualizar/eliminar la entrada en/desde el índice. El índice se actualiza tan pronto como se cambia un registro y este proceso bloquea la consulta hasta que finaliza.
Esto permite una recuperación más rápida de los registros en función de una condición en una columna indexada, el propósito más conocido de un índice.
La segunda parte es actualizar las estadísticas del índice. Esto permite que el optimizador determine si para una consulta dada vale la pena usar el índice. Imagine una consulta como SELECT * FROM users WHERE disabled = 0
. Suponga que la mayoría de los usuarios están activos. Si las estadísticas del índice están actualizadas, el optimizador se dará cuenta de que la consulta devolverá la mayoría de los registros de la tabla, y será necesario escanear la tabla casi por completo. Es probable que decida no usar el índice y escanear la tabla de inmediato.
Esta actualización no se realiza automáticamente excepto en casos muy específicos situaciones
. Estas estadísticas deben actualizarse manualmente de forma regular con un ANALYZE TABLE [table_name]