我有一個大約2Mln記錄的表,我想分割它。MySQL的分區 - 主鍵和唯一記錄的錯誤
我把id列作爲PRIMARY AUTO_INCREMENT int(它必須始終是UNIQUE)。 我有一列「他們」int(4),我想從2016年到2050年劃分BY RANGE,因爲大多數查詢使用WHERE語句獲得1年的時間。
進行分區我得到一個錯誤,說「heear」鍵必須與PRIMARY KEY一致,所以我編輯了執行多列鍵PRIMARY(id,theyear)的主鍵。
這一切OK,但我的「ID」列不是唯一了,因爲它會檢查「的某些地方」列太... 所以,如果我插入:
INSERT INTO table (id, theyear) VALUES (1, 2016);
INSERT INTO table (id, theyear) VALUES (1, 2017);
它說沒有錯誤,因爲UNIQUE檢查id和heear。
如何實現分區而不會丟失「id」列上的UNIQUE?
謝謝。
你是否試圖在年份中添加一個單獨的'唯一'約束? – cwallenpoole
我基於這個文檔:https://dev.mysql.com/doc/refman/5.7/en/partitioning-range.html,但在我看來,你不需要改變你的主鍵一個RANGE分區。他們使用的所有示例都沒有PRIMARY KEY。我錯過了什麼嗎?你是否試圖通過錯誤的KEY()分區? –
爲什麼你想分區?你認爲什麼查詢會運行得更快?請提供該查詢和「SHOW CREATE TABLE」。我可能會爭辯說,一個合適的索引將會快速或快速地進行分區。也許該指數將從YEAR開始。提示:http://mysql.rjweb.org/doc.php/partitionmaint –