gpt4 book ai didi

mysql - 我尝试对表进行分区时出错

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

这是我的帖子表:

CREATE TABLE `posts` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`date` datetime NOT NULL DEFAULT CURRENT_TIMESTAMP,
`img` varchar(255) COLLATE utf8_croatian_ci NOT NULL,
`vid` varchar(255) COLLATE utf8_croatian_ci NOT NULL,
`title` varchar(255) COLLATE utf8_croatian_ci NOT NULL,
`subtitle` varchar(255) COLLATE utf8_croatian_ci NOT NULL,
`auth` varchar(54) COLLATE utf8_croatian_ci NOT NULL,
`story` longtext COLLATE utf8_croatian_ci NOT NULL,
`tags` varchar(255) COLLATE utf8_croatian_ci NOT NULL,
`status` varchar(100) COLLATE utf8_croatian_ci NOT NULL,
`moder` varchar(50) COLLATE utf8_croatian_ci NOT NULL,
`rec` varchar(50) COLLATE utf8_croatian_ci NOT NULL,
`pos` varchar(50) COLLATE utf8_croatian_ci NOT NULL,
`inde` int(11) NOT NULL,
PRIMARY KEY (`id`)
) ENGINE=InnoDB AUTO_INCREMENT=117 DEFAULT CHARSET=utf8 COLLATE=utf8_croatian_ci

我想创建两个分区以提高查询性能。
第一个分区应包含所有非存档行。
第二个分区 - 所有归档行。

ALTER TABLE posts
PARTITION BY LIST COLUMNS (status)
(
PARTITION P1 VALUES IN ('admin', 'moder', 'public', 'rec'),
PARTITION P2 VALUES IN ('archive')
);

phpmyadmin 错误:

Static analysis:

1 errors were found during analysis.

Unrecognized alter operation. (near "" at position 0)
MySQL said:

#1503 - A PRIMARY KEY must include all columns in the table's partitioning function

有什么帮助吗?

最佳答案

您想要加速哪些查询?由于您当前拥有唯一的索引,因此 WHERE id=...WHERE id BETWEEN ... AND ... 是唯一快速的查询。 您建议的分区对于其他查询不会有太大帮助

你似乎只有几十行;除非您预计至少有一百万行,否则不要考虑分区。

status 只有 5 个值?然后将其设置为 ENUM('archive', 'admin', 'moder', 'public', 'rec') NOT NULL。这将占用 1 个字节而不是很多字节。

如果您要查询date和/或status和/或auth,那么我们来谈谈索引,尤其是“复合”诸如此类的索引。并且,为了实现您设想的“存档”分割,请将 status 作为索引中的第一列。

关于mysql - 我尝试对表进行分区时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46111728/

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