Отговорих на този въпрос през 2009 г. По това време в MySQL нямаше синтаксис за преименуване на индекс.
Оттогава MySQL 5.7 въведе ALTER TABLE RENAME INDEX
синтаксис.
http://dev.mysql.com/doc/refman /5.7/bg/alter-table.html казва отчасти:
По-ранни версии на MySQL, напр. 5.6 и по-стари, не поддържат синтаксис в ALTER TABLE
за преименуване на индекс (или ключ, който е синоним).
Единственото решение беше да ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...)
.
Няма ALTER INDEX
команда в MySQL. Можете само DROP INDEX
и след това CREATE INDEX
с новото име.
Относно вашата актуализация по-горе:може би документацията не е достатъчно точна. Независимо от това, няма SQL синтаксис за преименуване на индекс.
Индексът е структура от данни, която може да бъде възстановена от данните (всъщност се препоръчва периодично да се изграждат индекси с OPTIMIZE TABLE
). Отнема известно време, но това е обичайна операция. Структурите от данни на индексите са отделни от данните в таблицата, така че добавянето или пускането на индекс не трябва да се докосва до данните от таблицата, както се казва в документацията.
Относно .frm
файл, MySQL не поддържа редактиране на .frm
файл. Не бих го направил по някаква причина. Вие сте 100% гарантирани, че ще повредите вашата таблица и ще я направите неизползваема.