2010-03-10 12 views
8

en MySQL, Si creo una clave única en dos columnas, dicenmysql clave única e índice

clave única my_key (column1, column2)

¿Es necesario construir otra tecla en column1? Mi objetivo es que las columnas 1 y 2 sean únicas, y haré muchas selecciones por columna1.

+1

acaba de hacer un experimento utilizando EXPLAIN, parece que no tengo que crear otra clave en la columna 1, ya que mysql utilizará la clave única al hacer seleccionar codificado por column1. – Beier

Respuesta

11

No, no es necesario porque se puede usar un índice en (columna1, columna2) en lugar de un índice de columna1 solo.

Es posible que desee crear un nuevo índice solo en la columna dos, ya que el índice (columna1, columna2) no es bueno cuando solo busca (columna2).

8

No, su índice my_key se ocupa de cualquier consulta en column1 o condiciones en column1 Y column2. Sin embargo, si realiza consultas solo en column2, debe agregar un índice adicional para column2 para poder consultarlo de manera eficiente.

Por otra parte, si ambos column1 y column2 son únicos, entonces es posible que desee considerar la posibilidad de usar algo como

[...] 
UNIQUE(column1), 
UNIQUE(column2), 
PRIMARY KEY (column1, column2); 

Esto asegura que tanto column1 y column2 son únicos, y cualquier consulta seleccionando sólo column1 y column2 puede estar recuperado usando acceso de solo índice.

2

Un UNIQUE-index es un btree-index. Este índice está ordenado y es por eso que no necesita un segundo índice en la primera columna. El orden de clasificación de la combinación también funcionará solo para la primera columna, pero no solo para la segunda columna.

Cuestiones relacionadas