Me gustaría cambiar el nombre de un índice. He mirado la documentación de la tabla de alteración , pero no puedo encontrar la sintaxis para simplemente cambiar el nombre de un índice. Al hacerlo a través de la GUI de MySQL, elimina el índice y crea uno nuevo. Si bien esto funciona, me gustaría evitar la reconstrucción de todo el índice solo para cambiar el nombre de un índice.
[INFORMACIÓN ADICIONAL]
En la documentación de la tabla alter dice
Las alteraciones que modifican solo los metadatos de la tabla y no los datos de la tabla se pueden realizar de inmediato alterando el archivo .frm de la tabla y sin tocar el contenido de la tabla. Los siguientes cambios son alteraciones rápidas que se pueden realizar de esta manera:
* Renaming a column or index.
Sin embargo, cuando intenté cambiar el nombre del índice editando el archivo .frm (en una base de datos de prueba) y reiniciando el servidor, ahora dice "No se pudieron recuperar las columnas" en la interfaz de usuario al intentar enumerar las columnas y al intentar ejecutar una consulta, devuelve el error "Motor de tabla desconocido ''". El archivo .frm tiene mucho contenido binario. ¿Existe una buena herramienta para editar la información binaria?
Para MySQL 5.7:
ALTER TABLE tbl_name RENAME INDEX old_index_name TO new_index_name
Para versiones anteriores de MySQL:
ALTER TABLE tbl_name DROP INDEX old_index_name, ADD INDEX new_index_name (...)
Ver http://dev.mysql.com/doc/refman/5.7/en/alter-table.html
fuente
Esta pregunta se hizo hace mucho tiempo y se actualizó por última vez hace más de medio año. Aún siento la necesidad de agregar este consejo:
Si la columna indexada se usa en otro lugar como clave externa, puede encontrar un error relacionado con eso. Hacer esto puede ayudar:
SET FOREIGN_KEY_CHECKS = 0; ALTER TABLE tbl DROP INDEX index_name; ALTER TABLE tbl ADD INDEX new_index_name (indexed_column); SET FOREIGN_KEY_CHECKS = 1;
Espero que alguien encuentre esto útil.
fuente
ALTER TABLE tbl ADD INDEX new_index_name (indexed_column), DROP INDEX index_name