Les mises à jour des index sont doubles.
La première partie consiste à insérer/mettre à jour/supprimer l'entrée dans/de l'index. L'index est mis à jour dès qu'un enregistrement est modifié, et ce processus bloque la requête jusqu'à son achèvement.
Cela permet une récupération plus rapide des enregistrements en fonction d'une condition sur une colonne indexée, l'objectif le mieux compris d'un index.
La deuxième partie est la mise à jour des statistiques de l'index. Cela permet à l'optimiseur de déterminer si, pour une requête donnée, cela vaut même la peine d'utiliser l'index. Imaginez une requête comme SELECT * FROM users WHERE disabled = 0
. Supposons que la plupart des utilisateurs sont en fait actifs. Si les statistiques d'index sont à jour, l'optimiseur se rendra compte que la plupart des enregistrements de la table seront renvoyés par la requête, la table devra presque entièrement être parcourue. Il décidera probablement de ne pas utiliser l'index et d'analyser immédiatement la table.
Cette mise à jour ne se fait pas automatiquement sauf dans des cas très spécifiques situations
. Ces statistiques doivent être mises à jour manuellement et régulièrement avec un ANALYZE TABLE [table_name]