sql >> Database >  >> RDS >> Mysql

Hoe hernoem ik een index in MySQL

Ik beantwoordde deze vraag in 2009. Destijds was er geen syntaxis in MySQL om een ​​index te hernoemen.

Sindsdien introduceerde MySQL 5.7 een ALTER TABLE RENAME INDEX syntaxis.

http://dev.mysql.com/doc/refman /5.7/nl/alter-table.html zegt gedeeltelijk:

Eerdere versies van MySQL, b.v. 5.6 en eerder, ondersteunen geen syntaxis in ALTER TABLE om een ​​index (of sleutel, wat een synoniem is) te hernoemen.

De enige oplossing was om ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Er is geen ALTER INDEX commando in MySQL. U kunt alleen DROP INDEX en dan CREATE INDEX met de nieuwe naam.

Wat betreft je update hierboven:misschien is de documentatie niet precies genoeg. Hoe dan ook, er is geen SQL-syntaxis om een ​​index te hernoemen.

Een index is een gegevensstructuur die kan worden herbouwd op basis van de gegevens (het wordt zelfs aanbevolen om indexen periodiek opnieuw op te bouwen met OPTIMIZE TABLE ). Het kost wat tijd, maar het is een alledaagse operatie. De gegevensstructuren van indexen staan ​​los van tabelgegevens, dus het toevoegen of verwijderen van een index hoeft de tabelgegevens niet aan te raken, zoals de documentatie zegt.

Over de .frm bestand, ondersteunt MySQL het bewerken van de .frm . niet het dossier. Ik zou het om welke reden dan ook niet doen. U bent 100% gegarandeerd dat u uw tafel corrumpeert en onbruikbaar maakt.



  1. Berekening van de gemiddelde voorraadkosten in SQL

  2. Tabellen samenvoegen met kommawaarden

  3. Een database reverse engineeren in MySQL Workbench

  4. PDOException "kon stuurprogramma niet vinden" in php