La suppression d'un index en double dans MySQL prenait assez de temps, donc pendant que j'attendais, j'ai cherché à ce sujet et trouvé ce post de 2006, parlant de la façon dont MySQL gère ADD
et DROP
indexe.
Si une table T est une table MySQL ayant quatre index (ndx1, ndx2, ndx3, ndx4) et que vous souhaitez «modifier la table T, supprimer l'indice ndx3; voici exactement ce qui se passe sous le capot:
1) MySQL copie T.MYD dans une table temporaire, c'est-à-dire S.MYD et un zéro octet S.MYI. 2) MySQL ne modifie pas la table S ajoute l'index ndx1 (...); 3) MySQL ne modifie pas la table S ajoute l'index ndx2 (...); 4) MySQL ne modifie pas la table S ajoute l'index ndx4 (...); 5) MySQL supprime T.MYD et supprime T.MYI 6) MySQL renomme S.MYD en T.MYD, et renomme S.MYI en T.MYI
Est-ce toujours vrai? Ses conseils sont-ils toujours valables?
Étant donné la même table MyISAM T ayant quatre index (ndx1, ndx2, ndx3, ndx4) et que vous souhaitez «modifier la table T drop index ndx3; essayez ceci à la place:
1) créer la table T1 comme T; Cela crée une table vide T1 avec les index ndx1, ndx2, ndx3 et ndx4. 2) modifier l'index de chute de la table T1 ndx3; Cela supprime l'index ndx3 sur le T1 vide, qui devrait être instantané. 3) insérer dans T1 select * de T; Cela remplira la table T et chargera les trois (3) index pour T1 en une seule passe. 4) table de table basse T; 5) modifier la table T1 renommée en T;
Comment gérez-vous tous l'ajout et la suppression d'index dans les grandes tables?