Je viens de rencontrer un problème étrange, selon lequel, selon la façon dont je crée un index, un nom d'index est requis.
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
Il me semble que l'appel CREATE INDEX ne devrait pas rendre le nom d'index requis. Je me demande s'il s'agit d'un MySQLism ou d'un standard SQL?
la source
ALTER TABLE
(il y a certains cas où des index implicites seront créés par divers SGBD pour supporter les contraintes, mais ce n'est pas ce que je veux dire).Si vous ne fournissez pas de nom pour l'index, MySQL nommera automatiquement l'index pour vous.
Les
ALTER TABLE ADD INDEX
instructions ci-dessus produiront les index suivants:col1
col1_2
col2
Si vous créez un index avec une seule colonne, il peut ne pas être nécessaire de fournir un nom pour l'index (car le nom de l'index sera le même que le nom de la colonne). Mais si vous créez un index avec plusieurs colonnes, il peut être préférable de fournir un nom pour l'index afin qu'il soit plus facile d'identifier l'index.
Il est recommandé de fournir un nom pour l'index (et de le préfixer avec
idx
ou quelque chose pour l'identifier en tant qu'index):la source