sql >> Databasteknik >  >> RDS >> Mysql

Hur byter jag namn på ett index i MySQL

Jag svarade på den här frågan 2009. Vid den tiden fanns det ingen syntax i MySQL för att byta namn på ett index.

Sedan dess har MySQL 5.7 introducerat ett ALTER TABLE RENAME INDEX syntax.

http://dev.mysql.com/doc/refman /5.7/en/alter-table.html säger delvis:

Tidigare versioner av MySQL, t.ex. 5.6 och tidigare, stöder ingen syntax i ALTER TABLE för att byta namn på ett index (eller nyckel, som är en synonym).

Den enda lösningen var att ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Det finns ingen ALTER INDEX kommando i MySQL. Du kan bara DROP INDEX och sedan CREATE INDEX med det nya namnet.

Angående din uppdatering ovan:dokumentationen kanske inte är tillräckligt exakt. Oavsett så finns det ingen SQL-syntax för att byta namn på ett index.

Ett index är en datastruktur som kan byggas om från datan (det rekommenderas faktiskt att bygga om index med jämna mellanrum med OPTIMIZE TABLE ). Det tar lite tid, men det är en vanlig operation. Indexdatastrukturer är separata från tabelldata, så att lägga till eller ta bort ett index borde inte behöva röra tabelldata, som det står i dokumentationen.

Angående .frm fil, MySQL stöder inte redigering av .frm fil. Jag skulle inte göra det av någon anledning. Du är 100 % garanterad att korrumpera ditt bord och göra det oanvändbart.



  1. ap_pass_brigade misslyckades i handle_request_ipc-funktionen

  2. Spara specialtecken i MySQL-databasen

  3. Oracle SQL - Identifiera sekventiella värdeintervall

  4. Fel vid användning av INSERT INTO-tabellen PÅ DUPLICATE KEY, med en for loop-array