Acabo de encontrar un problema extraño, según el cual, según cómo creo un índice, se requiere un nombre 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
Me parece que la llamada CREATE INDEX no debe hacer que el nombre de índice sea obligatorio. Me pregunto si esto es un MySQLism o un estándar SQL.
fuente
ALTER TABLE
(hay ciertos casos en los que varios DBMS crearán índices implícitos para soportar restricciones, pero eso no es lo que quiero decir).Si no proporciona un nombre para el índice, MySQL nombrará automáticamente el índice por usted.
Las
ALTER TABLE ADD INDEX
declaraciones anteriores producirán los siguientes índices:col1
col1_2
col2
Si crea un índice con solo una columna, puede que no sea necesario proporcionar un nombre para el índice (ya que el nombre del índice será el mismo que el nombre de la columna). Pero si crea un índice con varias columnas, podría ser mejor proporcionar un nombre para el índice para que sea más fácil identificarlo.
Es una buena práctica proporcionar un nombre para el índice (y agregarle un prefijo
idx
o algo para identificarlo como índice):fuente