Acabei de encontrar um problema estranho, segundo o 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 tornar o nome do índice obrigatório. Eu estou querendo saber se isso é um MySQLismo, ou um padrão SQL?
Eu não acho que o padrão SQL define como criar índices .
Uma citação desta página da Wikipedia :
O manual do Postgres parece apoiar isso aqui:
Mais evidências nesta questão relacionada no SO.
Se você não fornecer um nome para o índice, o MySQL automaticamente nomeará 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, pode não ser 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, pode ser 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 com
idx
ou algo para identificá-lo como um índice):