gpt4 book ai didi

mysql创建具有索引范围的分区

转载 作者:行者123 更新时间:2023-11-29 02:25:52 25 4
gpt4 key购买 nike

假设我有一张 table cars。并且该表具有“品牌”(int)的索引列。目前我有 1-100 个品牌 ID,但可以说品牌经常被添加。

我想通过品牌索引列创建一个分区,每个分区将构成所有具有特定品牌的汽车,如果我向具有新品牌_id 的汽车插入一个新行,它也应该有一个分区(没有完全弄清楚分区是如何工作的)。那么我该如何为这个现有的表做呢。以及为什么每次我在网上看到分区代码时,似乎您应该像硬编码一样定义范围。

谢谢

最佳答案

不确定是否可以按照您想要的方式完成。

如果您想要均匀分布数据,请使用HASH 分区并设置一个计数以拥有您想要的多个分区。这可能是更好的选择,因为您可以拥有一个只有 1 辆车的品牌?或者可能不是?

CREATE TABLE cars (
id INT NOT NULL,
brand_id INT
)
PARTITION BY HASH(brand_id)
PARTITIONS 10;

这将根据 brand_id 给出 10 个大小均匀的分区

我知道如何以及是否可以为每个 id 创建一个新分区。当您通过 RANGE 创建分区时,您定义了每个分区的范围,如下所示。

CREATE TABLE cars (
id INT NOT NULL,
brand_id INT

PARTITION BY RANGE (brand_id) (
PARTITION p0 VALUES LESS THAN (10),
PARTITION p1 VALUES LESS THAN (25),
PARTITION p2 VALUES LESS THAN (50),
PARTITION p3 VALUES LESS THAN (100),
PARTITION p4 VALUES LESS THAN MAXVALUE
);

根据分区范围设置,这将给出 5 个不同大小的分区。

引用:

https://dev.mysql.com/doc/refman/5.1/en/partitioning-range.html https://dev.mysql.com/doc/refman/5.1/en/partitioning-hash.html

关于mysql创建具有索引范围的分区,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22229445/

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