我正在使用現有的數據庫並嘗試優化它。我看到沒有單個主鍵的表,但有兩個外鍵用作主鍵。我知道它會起作用。然而,爲了獲得更好的性能,使用兩個外鍵的主鍵(key1,key2)能夠像單鍵一樣工作更好嗎?什麼是MySQL主鍵(key1,key2)
例如:
CREATE TABLE ABC (
'xid' int(11),
'yid' int (11),
PRIMAY KEY (xid, yid)
)
does it perform the same (in terms of indexing) as:
CREATE TABLE ABC (
'id' int(11),
'yid' int (11),
'xid', int (11),
PRIMARY KEY (id),
KEY (xid, yid)
)
一些更新有
所以,我做了一些測試使用簡單的查詢,在三個不同的表
表妙..,有10000條記錄。只有userid作爲主要索引。
SELECT * FROM MYA其中userid = 12345
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE myA const PRIMARY PRIMARY 4 const 1
表MYB,是一個多到許多表,與伯id和的userid兩個外鍵中的一個。超過50000記錄
SELECT * FROM MYB其中userid = 12345
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE myB ref userid userid 4 const 53
表MYC,也是許多一對多表,但與複合主鍵,用戶ID是兩個中的一個。超過10萬的記錄
SELECT * FROM MYC其中userid = 12345
id select_type table type possible_keys key key_len ref rows Extra
1 SIMPLE myC ALL NULL NULL NULL NULL 101289 Using where
所以,表C中居然檢查所有10萬條記錄! (查詢只返回50條記錄)
有些東西我不明白......在我看來,複合材料主要是不做這項工作。
更多..
雖然我做更多的測試和「解釋」,我的結論是(在MySQL),即使你設置組合鍵作爲主鍵。您仍然必須爲所有鍵明確設置索引。然後你會喜歡索引。