Mysql
 sql >> Database >  >> RDS >> Mysql

Come rinominare un indice in MySQL

Ho risposto a questa domanda nel 2009. A quel tempo in MySQL non esisteva la sintassi per rinominare un indice.

Da allora, MySQL 5.7 ha introdotto un ALTER TABLE RENAME INDEX sintassi.

http://dev.mysql.com/doc/refman /5.7/en/alter-table.html dice in parte:

Versioni precedenti di MySQL, ad es. 5.6 e precedenti, non supporta la sintassi in ALTER TABLE per rinominare un indice (o una chiave, che è un sinonimo).

L'unica soluzione era ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Non esiste ALTER INDEX comando in MySQL. Puoi solo DROP INDEX e poi CREATE INDEX con il nuovo nome.

Per quanto riguarda il tuo aggiornamento sopra:forse la documentazione non è abbastanza precisa. Indipendentemente da ciò, non esiste una sintassi SQL per rinominare un indice.

Un indice è una struttura dati che può essere ricostruita a partire dai dati (infatti si consiglia di ricostruire gli indici periodicamente con OPTIMIZE TABLE ). Ci vuole un po' di tempo, ma è un'operazione banale. Le strutture dei dati degli indici sono separate dai dati della tabella, quindi l'aggiunta o l'eliminazione di un indice non dovrebbe dover toccare i dati della tabella, come dice la documentazione.

Per quanto riguarda il .frm MySQL non supporta la modifica di .frm file. Non lo farei per nessun motivo. Hai la garanzia al 100% di corrompere il tuo tavolo e renderlo inutilizzabile.