2010-03-10 116 views
8

,如果我創建兩列的唯一鑰匙,說MySQL的唯一鍵和索引

UNIQUE KEY my_keycolumn1column2

是有必要建立在column1另一個關鍵?我的目標是讓column1和column2是唯一的,我會做很多選擇鍵的column1。

+1

只是做了一個使用EXPLAIN的實驗,似乎我沒有必要在column1上創建另一個鍵,因爲mysql在使用column1選擇鍵時將使用唯一鍵。 – Beier 2010-03-10 21:21:02

回答

11

不,這不是必須的,因爲可以使用(column1,column2)上的索引代替column1的索引。

您可能想在第二列做一個新的索引,但是因爲索引(column1,column2)在僅搜索(column2)時不好。

8

不,您的my_key索引負責column1的任何疑問或column1column2的條件。但是,如果僅對column2進行查詢,則應該爲column2添加一個附加索引以便能夠高效地查詢它。

此外,如果兩個column1column2是唯一的,那麼你可能要考慮使用類似

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

這確保了column1column2是獨一無二的,任何查詢只選擇column1column2可使用僅索引訪問檢索。

2

獨特索引是btree-index。這個索引是排序的,這就是爲什麼你不需要第一個列的第二個索引。組合的排序順序也適用於第一列,但不適用於第二列。