gpt4 book ai didi

mysql - 如何按不在唯一索引中的列对 MySQL 表进行分区

转载 作者:可可西里 更新时间:2023-11-01 06:29:24 24 4
gpt4 key购买 nike

让我们有一个简单的产品表。每个产品都有其唯一的 ID 和类别。用户经常按类别搜索,所以我想按类别划分产品。一个分区中的每个类别例如

我该怎么做?因为我的 ID 列上当然有一个主键并且需要我的 ID 是唯一的。在每个类别中都不是唯一的。

但是 partitiong 有这样的限制,即“表上的每个唯一键必须使用表的分区表达式中的每一列”。

好吧,这不会让分区变得有点无用吗?或者我错过了什么?我该怎么办?

http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html

最佳答案

诀窍是将字段 category 添加到您当前的主键。 (您的主键将仍然是主键)
然后您可以按类别对表进行分区。

这是您可以使用的代码:

ALTER TABLE `products` DROP PRIMARY KEY , ADD PRIMARY KEY ( `id` , `category` );
ALTER TABLE `products` PARTITION BY KEY(category) PARTITIONS 6;

如果你想让id真正唯一,给id加上auto_increment选项,在表中插入数据时不要指定id值。 id 将在插入时由数据库服务器确定。

如有必要,更改字段名称和键名称。

文档:
Partitioning types
KEY Partioning

关于mysql - 如何按不在唯一索引中的列对 MySQL 表进行分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/11763008/

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