2010-03-10 4 views
8

,MySQL의 고유 키와 인덱스

UNIQUE KEY my_key (column1, column2)

column1에 다른 키를 구축 할 필요가있다라고? 제 목표는 column1과 column2를 고유하게 만드는 것입니다. column1에 의해 keyed 된 많은 선택을 할 것입니다.

+1

방금 ​​EXPLAIN을 사용하여 실험을했는데, column1에 다른 키를 만들 필요가없는 것 같습니다. mysql이 column1에 의해 keyed가 적용된 고유 키를 사용할 것이기 때문입니다. – Beier

답변

11

아니요, column1의 색인 대신에 (column1, column2)의 색인을 사용할 수 있으므로 필요하지 않습니다.

(column2) 만 검색 할 때 색인 (column1, column2)이 좋지 않으므로 새로운 색인을 만들 수 있습니다.

8

아니요, my_key 색인은 에있는 검색어 또는 과 column2에있는 검색어를 처리합니다. 그러나 column2에만 쿼리를 작성한 경우 column2에 대한 추가 인덱스를 추가해야 효율적으로 쿼리 할 수 ​​있습니다. 모두 column1column2가 고유 경우

또한, 당신은이 두 column1column2이 고유 보장

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

같은 것을 사용을 고려할 수도 있고, 어떤 쿼리는 column1을 선택하고 column2이 될 수 있습니다 인덱스 전용 액세스를 사용하여 검색됩니다.

2

고유 인덱스는 btree-index입니다. 이 인덱스는 정렬되어 있기 때문에 첫 번째 열에 두 번째 인덱스가 필요하지 않습니다. 조합의 정렬 순서는 첫 번째 열에 대해서만 작동하지만 두 번째 열에 대해서는 작동하지 않습니다.

관련 문제