Mysql
 sql >> Base de données >  >> RDS >> Mysql

Comment renommer un index dans MySQL

J'ai répondu à cette question en 2009. A cette époque, il n'y avait pas de syntaxe dans MySQL pour renommer un index.

Depuis, MySQL 5.7 a introduit un ALTER TABLE RENAME INDEX syntaxe.

http://dev.mysql.com/doc/refman /5.7/fr/alter-table.html dit en partie :

Les versions antérieures de MySQL, par ex. 5.6 et versions antérieures, ne prennent en charge aucune syntaxe dans ALTER TABLE pour renommer un index (ou une clé, qui est un synonyme).

La seule solution était de ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Il n'y a pas d'ALTER INDEX commande dans MySQL. Vous pouvez uniquement DROP INDEX puis CREATE INDEX avec le nouveau nom.

Concernant votre mise à jour ci-dessus :peut-être que la documentation n'est pas assez précise. Quoi qu'il en soit, il n'y a pas de syntaxe SQL pour renommer un index.

Un index est une structure de données qui peut être reconstruite à partir des données (en fait, il est recommandé de reconstruire les index périodiquement avec OPTIMIZE TABLE ). Cela prend du temps, mais c'est une opération banale. Les structures de données d'index sont séparées des données de table, donc l'ajout ou la suppression d'un index ne devrait pas avoir besoin de toucher les données de la table, comme le dit la documentation.

Concernant le .frm fichier, MySQL ne prend pas en charge la modification du .frm dossier. Je ne le ferais sous aucun prétexte. Vous êtes assuré à 100 % de corrompre votre table et de la rendre inutilisable.