Mysql
 sql >> Baza danych >  >> RDS >> Mysql

Jak zmienić nazwę indeksu w MySQL?

Odpowiedziałem na to pytanie w 2009 roku. W tym czasie w MySQL nie było składni umożliwiającej zmianę nazwy indeksu.

Od tego czasu MySQL 5.7 wprowadził ALTER TABLE RENAME INDEX składnia.

http://dev.mysql.com/doc/refman /5.7/pl/alter-table.html mówi w części:

Wcześniejsze wersje MySQL, m.in. 5.6 i wcześniejsze nie obsługują składni w ALTER TABLE zmienić nazwę indeksu (lub klucza, który jest synonimem).

Jedynym rozwiązaniem było ALTER TABLE DROP KEY oldkeyname, ADD KEY newkeyname (...) .

Nie ma ALTER INDEX polecenie w MySQL. Możesz tylko DROP INDEX a następnie CREATE INDEX z nową nazwą.

Odnośnie twojej aktualizacji powyżej:być może dokumentacja nie jest wystarczająco dokładna. Niezależnie od tego nie ma składni SQL do zmiany nazwy indeksu.

Indeks to struktura danych, którą można odbudować z danych (w rzeczywistości zaleca się okresowe odbudowywanie indeksów za pomocą OPTIMIZE TABLE ). To zajmuje trochę czasu, ale to powszechna operacja. Struktury danych indeksów są oddzielone od danych tabeli, więc dodanie lub upuszczenie indeksu nie powinno mieć wpływu na dane tabeli, jak mówi dokumentacja.

Odnośnie .frm MySQL nie obsługuje edycji pliku .frm plik. Nie zrobiłbym tego z jakiegokolwiek powodu. Masz 100% gwarancję, że zniszczysz swój stół i uczynisz go bezużytecznym.



  1. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Zmień nazwę tabeli Amazon RDS na wielką literę powoduje błąd

  2. Monitorować tabelę MySQL pod kątem zmian w programie C#?

  3. Uzyskaj pozycję wiersza w zapytaniu MYSQL

  4. Czy MySql obsługuje sp_getapplock?

  5. Czy zapytania aktualizujące mysql korzystają z indeksu?