,如果我創建兩列的唯一鑰匙,說MySQL的唯一鍵和索引
UNIQUE KEY my_key
(column1
,column2
)
是有必要建立在column1
另一個關鍵?我的目標是讓column1和column2是唯一的,我會做很多選擇鍵的column1。
,如果我創建兩列的唯一鑰匙,說MySQL的唯一鍵和索引
UNIQUE KEY my_key
(column1
,column2
)
是有必要建立在column1
另一個關鍵?我的目標是讓column1和column2是唯一的,我會做很多選擇鍵的column1。
不,這不是必須的,因爲可以使用(column1,column2)上的索引代替column1的索引。
您可能想在第二列做一個新的索引,但是因爲索引(column1,column2)在僅搜索(column2)時不好。
不,您的my_key
索引負責column1
的任何疑問或column1
和column2
的條件。但是,如果僅對column2
進行查詢,則應該爲column2
添加一個附加索引以便能夠高效地查詢它。
此外,如果兩個column1
和column2
是唯一的,那麼你可能要考慮使用類似
[...]
UNIQUE(column1),
UNIQUE(column2),
PRIMARY KEY (column1, column2);
這確保了column1
和column2
是獨一無二的,任何查詢只選擇column1
和column2
可使用僅索引訪問檢索。
獨特索引是btree-index。這個索引是排序的,這就是爲什麼你不需要第一個列的第二個索引。組合的排序順序也適用於第一列,但不適用於第二列。
只是做了一個使用EXPLAIN的實驗,似乎我沒有必要在column1上創建另一個鍵,因爲mysql在使用column1選擇鍵時將使用唯一鍵。 – Beier 2010-03-10 21:21:02