簡體   English   中英

MySQL分區-主鍵和唯一記錄出錯

[英]MySQL Partitioning - Error by Primary key and Unique records

我有一張約有200萬條記錄的大桌子,我想對它進行分區。

我將id列設置為PRIMARY AUTO_INCREMENT int(並且必須始終為UNIQUE)。 我有一列“ theyear” int(4),我想按2016年至2050年的范圍對RANGE進行分區,因為大多數Query使用的WHERE語句一次獲得1年。

進行分區時,我收到一條錯誤消息,說“ theyear”鍵必須與PRIMARY KEY一起使用,因此我已經編輯了主鍵,並使用了多列鍵PRIMARY(id,theyear)。

沒關系,但是我的“ id”列不再是唯一的,因為它也檢查“ theyear”列...因此,如果我插入:

INSERT INTO table (id, theyear) VALUES (1, 2016);
INSERT INTO table (id, theyear) VALUES (1, 2017);

它說沒有錯誤,因為唯一檢查ID和年份。

如何實現分區而不丟失“ id”列上的UNIQUE?

謝謝。

由於您的查詢將使用theyear ,因此按RANGE進行分區將有助於使用適當的INDEX處理大數據。

不要使用KEY()分區,保留現有的主鍵

INDEX IDX_theyear(theyear)

PARTITION BY RANGE (theyear) ( 
PARTITION p0 VALUES LESS THAN (2017), 
PARTITION p1 VALUES LESS THAN (2018), 
PARTITION p2 VALUES LESS THAN (2019), 
PARTITION p3 VALUES LESS THAN (2020)

例如。 您可以在以后添加更多分區,但是難度更大。 如果您的數據較舊,那么顯然可以從最早的年份開始

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM