gpt4 book ai didi

mysql - 分区和子分区

转载 作者:行者123 更新时间:2023-11-29 04:53:37 24 4
gpt4 key购买 nike

以下用于对表进行分区的 CREATE TABLE 语句按预期工作,没有错误。

CREATE TABLE `ox_data_archive_20120108` (
`id` bigint(20) unsigned NOT NULL,
`creativeid` int unsigned NOT NULL,
`zoneid` int unsigned NOT NULL,
`datetime` datetime NOT NULL
) PARTITION BY LIST(to_days(datetime )) (
PARTITION `1Jan10` VALUES IN (to_days('2010-01-01') ),
PARTITION `2Jan10` VALUES IN (to_days('2010-01-02') ),
PARTITION `3Jan10` VALUES IN (to_days('2010-01-03') )
);

我需要做的是根据date + zoneid 创建子分区。我尝试了以下方法:

CREATE TABLE mypart (
`id` bigint(20) unsigned NOT NULL,
`creativeid` int unsigned NOT NULL,
`zoneid` int unsigned NOT NULL,
`datetime` datetime NOT NULL
) PARTITION BY LIST(to_days(datetime ))
SUBPARTITION BY KEY(zoneid) (
PARTITION `1Jan10` VALUES IN (to_days('2010-01-01') )
(Subpartition s1, Subpartition s2),
PARTITION `2Jan10` VALUES IN (to_days('2010-01-02') )
(Subpartition s3, Subpartition s4),
PARTITION `3Jan10` VALUES IN (to_days('2010-01-03') )
(Subpartition s5, Subpartition s6)
);

插入这个表:

INSERT INTO mypart VALUES (1, 2, 3, '2012-01-31 04:10:03');

导致以下错误:

ERROR 1526 (HY000): Table has no partition for value 734898

我的查询希望使用基于日期的 zoneid 子分区。可能吗?

最佳答案

与您断言第一个表可以正常工作相反,将样本数据插入其中:

INSERT INTO `ox_data_archive_20120108` VALUES (1, 2, 3, '2012-01-31 04:10:03');

导致与第二个表相同的错误。错误 (734898) 中给出的值恰好是 to_days('2012-01-31') 的值。您收到此错误是因为您只有 2010 年 1 月 1 日st 到 3rd 的分区。示例数据的日期和年份都在定义的分区。而不是 TO_DAYS(返回从 0 年到给定日期的天数),您可能需要 DAYOFMONTH .由于每个分区都是连续的,RANGE 分区似乎比 LIST 更合适。

题外话,当你想为子分区设置选项时,你只需要指定单独的子分区定义。由于您没有这样做,SUBPARTITIONS 2 子句将执行与您的语句相同的操作,但更简单。

CREATE TABLE mypart (
`id` bigint(20) unsigned NOT NULL,
`creativeid` int unsigned NOT NULL,
`zoneid` int unsigned NOT NULL,
`datetime` datetime NOT NULL
) PARTITION BY RANGE(DAYOFMONTH(`datetime`))
SUBPARTITION BY KEY(zoneid)
SUBPARTITIONS 2 (
PARTITION `01` VALUES LESS THAN 2, -- Note: 0 is valid day-of-month
PARTITION `02` VALUES LESS THAN 3,
PARTITION `03` VALUES LESS THAN 4,
...
);

关于mysql - 分区和子分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/8861160/

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