Acabei de encontrar um problema estranho, pelo qual, dependendo de como eu crio um índice, é necessário um nome de índice.
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
Parece-me que a chamada CREATE INDEX não deve exigir o nome do índice. Gostaria de saber se este é um MySQLism, ou um padrão SQL?
fonte
ALTER TABLE
(existem certos casos em que índices implícitos serão criados por vários DBMS para suportar restrições, mas não é isso que eu quero dizer).Se você não fornecer um nome para o índice, o MySQL nomeará automaticamente o índice para você.
As
ALTER TABLE ADD INDEX
declarações acima produzirão os seguintes índices:col1
col1_2
col2
Se você criar um índice com apenas uma coluna, talvez não seja necessário fornecer um nome para o índice (já que o nome do índice será o mesmo que o nome da coluna). Mas se você criar um índice com várias colunas, talvez seja melhor fornecer um nome para o índice, para que seja mais fácil identificá-lo.
É uma boa prática fornecer um nome para o índice (e prefixá-lo
idx
ou algo para identificá-lo como um índice):fonte