Mysql
 sql >> Base de Dados >  >> RDS >> Mysql

Como renomear um índice no MySQL


Respondi a esta pergunta em 2009. Naquela época não havia sintaxe no MySQL para renomear um índice.

Desde então, o MySQL 5.7 introduziu um ALTER TABLE RENAME INDEX sintaxe.

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

Versões anteriores do MySQL, por exemplo, 5.6 e anteriores, não suportam sintaxe em ALTER TABLE para renomear um índice (ou chave, que é um sinônimo).

A única solução era ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Não há ALTER INDEX comando no MySQL. Você só pode DROP INDEX e então CREATE INDEX com o novo nome.

Em relação à sua atualização acima:talvez a documentação não seja precisa o suficiente. Independentemente disso, não há sintaxe SQL para renomear um índice.

Um índice é uma estrutura de dados que pode ser reconstruída a partir dos dados (na verdade, é recomendado reconstruir os índices periodicamente com OPTIMIZE TABLE ). Leva algum tempo, mas é uma operação comum. As estruturas de dados de índices são separadas dos dados da tabela, portanto, adicionar ou descartar um índice não deve afetar os dados da tabela, como diz a documentação.

Em relação ao .frm arquivo, o MySQL não suporta a edição do .frm Arquivo. Eu não faria isso por qualquer motivo. Você está 100% garantido para corromper sua tabela e torná-la inutilizável.