Просто натолкнулся на странную проблему, когда в зависимости от того, как я создаю индекс, требуется имя индекса.
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
Мне кажется, что вызов CREATE INDEX не должен делать имя индекса обязательным. Мне интересно, если это MySQLism или стандарт SQL?
источник
ALTER TABLE
(в некоторых случаях неявные индексы будут создаваться различными СУБД для поддержки ограничений, но я не это имею в виду).Если вы не предоставите имя для индекса, MySQL автоматически назовет индекс для вас.
Приведенные
ALTER TABLE ADD INDEX
выше заявления приведут к следующим индексам:col1
col1_2
col2
Если вы создаете индекс только с одним столбцом, может не потребоваться указывать имя для индекса (поскольку имя индекса будет таким же, как и имя столбца). Но если вы создаете индекс с несколькими столбцами, может быть лучше указать имя индекса, чтобы его было легче идентифицировать.
Хорошей практикой является предоставление имени для индекса (и добавление к нему префикса
idx
или чего-то еще, чтобы идентифицировать его как индекс):источник