gpt4 book ai didi

Mysql 分区 - 如何对包含唯一列的表进行列表分区?

转载 作者:行者123 更新时间:2023-11-29 07:24:43 28 4
gpt4 key购买 nike

我正在做 mysql 列表分区。我的表数据如下

----------------------------------------
id | unique_token | city | student_name |
----------------------------------------
1 | xyz |mumbai| sanjay |
-----------------------------------------
2 | abc |mumbai| vijay |
----------------------------------------
3 | def | pune | ajay |
----------------------------------------

在上表中 unique_token 列有一个唯一的键,我想用城市列进行列表分区。根据mysql文档,每个分区列必须是表的每个唯一键的一部分,因此为了使用城市列进行列表分区,我必须创建新的唯一键作为unique_key(unique_token,city)

现在的问题是 unique_token 列应该是唯一的,如果我在表中插入两行 ('xyz','banglore') 和 ('xyz','pune') 那么这些行将被插入到表中,但 unique_token 列根本不会是唯一的。

我想知道如何在该表上进行列表分区而不在 unique_token 列中包含重复数据?

最佳答案

MySQL 的 PARTITION 实现存在限制。特别是,没有 FOREIGN KEYsUNIQUE 键,除非它们碰巧包含“分区键”。这些限制的存在是因为实现它们的成本 Not Acceptable 。反过来,这是由于每个分区本质上是一个单独的“表”,具有自己的索引。不存在跨越整个分区集的“索引”。这样的“全局索引”将使 FK 和 UNIQUE 键变得可行且高效。这个可能出现在5.8版本中。

同时,让我将您的问题从“如何进行LIST分区...”更改为“为什么进行LIST” 根本分区吗?”。据我所知,PARTITION BY LIST 没有任何实用性——性能、便利性、其他任何东西都没有。如果您有这样做的理由,请解释。我很乐意改变我对分区相当消极的态度。 (据我所知,只有 4PARTITION BY RANGE 用例,但那是另一个话题了。)

关于Mysql 分区 - 如何对包含唯一列的表进行列表分区?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34916212/

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