Właśnie natknąłem się na dziwny problem, w którym w zależności od sposobu utworzenia indeksu wymagana jest nazwa indeksu.
http://dev.mysql.com/doc/refman/5.5/en/create-index.html
http://dev.mysql.com/doc/refman/5.5/en/alter-table.html
CREATE INDEX `random_name` ON `my_table` (`my_column`); # Requires an index name
ALTER TABLE `my_table` ADD INDEX (`my_column`); # Does not require an index name
Wydaje mi się, że wywołanie CREATE INDEX nie powinno wymagać podania nazwy indeksu. Zastanawiam się, czy jest to MySQLism, czy standard SQL?
źródło
ALTER TABLE
(istnieją pewne przypadki, w których różne DBMS utworzą indeksy niejawne w celu obsługi ograniczeń, ale nie o to mi chodzi).Jeśli nie podasz nazwy indeksu, MySQL automatycznie nada mu nazwę.
Powyższe
ALTER TABLE ADD INDEX
instrukcje wygenerują następujące indeksy:col1
col1_2
col2
Jeśli utworzysz indeks tylko z jedną kolumną, może nie być konieczne podanie nazwy indeksu (ponieważ nazwa indeksu będzie taka sama jak nazwa kolumny). Ale jeśli utworzysz indeks z wieloma kolumnami, lepiej podać nazwę indeksu, aby łatwiej było go zidentyfikować.
Dobrą praktyką jest podanie nazwy indeksu (i prefiks
idx
lub identyfikacja indeksu):źródło