Ich bin gerade auf ein seltsames Problem gestoßen, bei dem je nachdem, wie ich einen Index erstelle, ein Indexname erforderlich ist.
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
Es scheint mir, dass der CREATE INDEX-Aufruf den Indexnamen nicht erforderlich machen sollte. Ich frage mich, ob dies ein MySQLism oder ein SQL-Standard ist?
quelle
ALTER TABLE
(es gibt bestimmte Fälle, in denen implizite Indizes von verschiedenen DBMS erstellt werden, um Einschränkungen zu unterstützen, aber das meine ich nicht).Wenn Sie keinen Namen für den Index angeben, benennt MySQL den Index automatisch für Sie.
Mit den
ALTER TABLE ADD INDEX
obigen Anweisungen werden die folgenden Indizes erstellt:col1
col1_2
col2
Wenn Sie einen Index mit nur einer Spalte erstellen, ist es möglicherweise nicht erforderlich, einen Namen für den Index anzugeben (da der Name des Index dem Namen der Spalte entspricht). Wenn Sie jedoch einen Index mit mehreren Spalten erstellen, ist es möglicherweise besser, einen Namen für den Index anzugeben, damit der Index leichter identifiziert werden kann.
Es hat sich bewährt, einen Namen für den Index anzugeben (und diesen mit einem Präfix zu versehen
idx
oder ihn als Index zu kennzeichnen):quelle