gpt4 book ai didi

MySQL 分区 - 主键和唯一记录的错误

转载 作者:行者123 更新时间:2023-11-29 18:26:09 24 4
gpt4 key购买 nike

我有一个包含大约 200 万条记录的大表,我想对其进行分区。

我将 id 列设置为 PRIMARY AUTO_INCRMENT int (并且它必须始终是唯一的)。我有一列“theyear”int(4),我想按范围从 2016 年到 2050 年进行分区,因为大多数查询使用 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);

它说没有错误,因为 UNIQUE 检查了 id 和 theyear。

如何实现分区而不丢失“id”列上的唯一性?

谢谢。

最佳答案

由于您的查询将在其中使用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)
例如。您可以稍后添加更多分区,但会更困难。如果您的数据较旧,那么显然从最早的年份开始

关于MySQL 分区 - 主键和唯一记录的错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46180639/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com