我一直在試圖弄清楚這一點上InnoDB表UNIQUE關鍵,但至今沒有運氣。使用複合主鍵或具有多個刀片
哪一個更好:與複合主鍵或一個主鍵和一個唯一索引的表?
我的表看起來像這樣:
CREATE TABLE data (
bucket_id INTEGER,
backend_id INTEGER,
unique_id INTEGER,
weight INTEGER,
PRIMARY KEY (bucket_id, unique_id)
) ENGINE=InnoDB
我做多個插入。在多值插入到被插入在
INSERT IGNORE INTO data VALUES (x1, x2, x3, x4), (y1, y2, y3, y4), .......)
外殼6個十億+行與每個500000行(由客戶端的限制)。這些都是在應用程序啓動時完成的,目前我需要儘可能加快速度。我需要(backend_id,unique_id)的唯一性。雖然我不控制這些,所以導入的數據中有重複。
所以現在的問題是,將使用組合主密鑰的唯一指標,而不是幫助我提高插入語句的速度?我知道很多其他因素影響這個,即緩衝池等。
*「哪一個更好?用複合主鍵或一個主鍵和一個唯一索引的表」 *什麼會「單一主鍵」是什麼? – 2013-05-02 10:20:47
*「我需要(backend_id,unique_id)的唯一性,雖然我不控制這些,所以導入的數據中有重複。」*這是否意味着您需要修復或忽略不良數據? – 2013-05-02 10:21:21
單字PRIMARY KEY將是bucket_id。沒有數據沒有問題,但數據的唯一性依賴於需要導入的更多列,所以如果兩行相互衝突,那麼backend_id和weight將是相同的,因此忽略第二行是安全的。 – Moffe 2013-05-02 10:42:07