2011-01-05 10 views
11

que he hecho algo como esto con el fin de utilizar on duplicate key update:¿Cuál es la importancia del nombre del índice cuando se crea un índice en MySQL?

CREATE UNIQUE INDEX blah on mytable(my_col_to_make_an_index); 

y su funcionado bien. Simplemente no estoy seguro de cuál es el propósito del nombre del índice, en este caso, 'bla'. Lo que he leído dice que use uno pero no puedo entender por qué. No parece usarse en consultas, aunque puedo verlo si exporto el esquema.

Entonces ... ¿para qué sirve el nombre del índice? Si se ayuda a la línea en el CREATE TABLE termina pareciéndose a:

UNIQUE KEY `clothID` (`clothID`) 

Respuesta

11

El nombre de índice se utiliza para hacer referencia al índice de futuros comandos. Como el índice de caída.

http://dev.mysql.com/doc/refman/5.0/en/drop-index.html

Sólo piensen de nombres de índices como nombres de tabla. También puede hacer fácilmente una tabla llamada 'blah'.

CREATE TABLE blah (f1 int); 

Pero 'blah' no es muy útil para referencia futura. Solo sé consistente. algo así como

CREATE UNIQUE INDEX field_uniq on mytable(field); 

o

CREATE INDEX field1_field2_inx on mytable(field1, field2); 
+0

¿Puedo crear índices del mismo nombre en diferentes tablas? –

+1

@FrozenFlame Puedes hacerlo en MySQL, pero no en muchas otras bases de datos, como PostgreSQL. – ostrokach

1

Estás en lo correcto. El nombre del índice solo se usa como identificador, por lo que puede consultarlo si necesita editarlo, eliminarlo o consultarlo más adelante. No se usa para ningún otro propósito.

Puede nombrar el índice lo que sea más conveniente para usted, pero probablemente le ayude cierta consistencia (nombrar su índice 'blah' es perfectamente válido, pero no tendrá una idea de dónde está, qué hace, o por qué lo creaste).

8

La denominación es para permitir el espacio de nombres global y ayuda a comprender mejor el esquema de la tabla.

El nombre del índice es muy útil para forcing index hint. Intente no usar el mismo nombre para el índice y la columna (ambiguo), y el caso de camello no tiene sentido para un sistema como Windows (que no permite la distinción entre mayúsculas y minúsculas).

Por ejemplo, así:

unique key cloth_id_uniq (cloth_id); 
>>allow people knowing this an unique key on column cloth_id 

fulltext key description_ft (description); 
>>allow people knowing this index is fulltext on column description 

No creo que hay una convención de nomenclatura estándar, lo que le parece intuitiva le ayudará más.

Cuestiones relacionadas