Dejar caer un índice duplicado en MySQL estaba tomando bastante tiempo, así que mientras esperaba busqué al respecto y encontré esta publicación de 2006, hablando sobre cómo maneja ADD
e DROP
indexa MySQL .
Si una tabla T es una tabla MySQL que tiene cuatro índices (ndx1, ndx2, ndx3, ndx4) y desea 'alterar el índice de caída de la tabla T ndx3'; Esto es exactamente lo que sucede debajo del capó:
1) MySQL copia T.MYD a una tabla temporal, es decir, S.MYD y un byte cero S.MYI. 2) MySQL 'altera la tabla S agrega índice ndx1 (...); 3) MySQL 'altera la tabla S agrega índice ndx2 (...); 4) MySQL 'altera la tabla S agrega índice ndx4 (...); 5) MySQL elimina T.MYD y elimina T.MYI 6) MySQL cambia el nombre de S.MYD a T.MYD y renombra S.MYI a T.MYI
¿Sigue siendo cierto? ¿Su consejo sigue siendo válido?
Dada la misma tabla MyISAM T que tiene cuatro índices (ndx1, ndx2, ndx3, ndx4) y desea 'alterar el índice de caída de la tabla T ndx3;' intente esto en su lugar:
1) crear la tabla T1 como T; Esto crea una tabla vacía T1 con índices ndx1, ndx2, ndx3 y ndx4. 2) alterar el índice de caída de la tabla T1 ndx3; Esto elimina el índice ndx3 en el T1 vacío, que debería ser instantáneo. 3) insertar en T1 seleccione * de T; Esto llenará la tabla T y cargará los tres (3) índices para T1 en una sola pasada. 4) caída de la mesa tabla T; 5) alterar el cambio de nombre de la tabla T1 a T;
¿Cómo manejan todos la adición y eliminación de índices de tablas grandes?