Mysql
 sql >> Datenbank >  >> RDS >> Mysql

Wie benenne ich einen Index in MySQL um

Ich habe diese Frage 2009 beantwortet. Damals gab es in MySQL keine Syntax, um einen Index umzubenennen.

Seitdem hat MySQL 5.7 einen ALTER TABLE RENAME INDEX eingeführt Syntax.

http://dev.mysql.com/doc/refman /5.7/en/alter-table.html sagt auszugsweise:

Frühere Versionen von MySQL, z.B. 5.6 und früher unterstützen keine Syntax in ALTER TABLE um einen Index (oder Schlüssel, was ein Synonym ist) umzubenennen.

Die einzige Lösung war ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Es gibt keinen ALTER INDEX Befehl in MySQL. Sie können nur DROP INDEX und dann CREATE INDEX mit dem neuen Namen.

In Bezug auf Ihr obiges Update:Vielleicht ist die Dokumentation nicht präzise genug. Unabhängig davon gibt es keine SQL-Syntax, um einen Index umzubenennen.

Ein Index ist eine Datenstruktur, die aus den Daten neu erstellt werden kann (tatsächlich wird empfohlen, Indizes regelmäßig mit OPTIMIZE TABLE neu zu erstellen ). Es dauert einige Zeit, aber es ist eine alltägliche Operation. Indizes-Datenstrukturen sind von Tabellendaten getrennt, daher sollte das Hinzufügen oder Löschen eines Indexes die Tabellendaten nicht berühren müssen, wie es in der Dokumentation heißt.

Bezüglich der .frm -Datei unterstützt MySQL die Bearbeitung von .frm nicht Datei. Ich würde es aus keinem Grund tun. Es ist zu 100 % garantiert, dass Sie Ihre Tabelle beschädigen und unbrauchbar machen.