首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >为什么只有unique/primary keys必须在分区表达式中使用分区表的所有列

问为什么只有unique/primary keys必须在分区表达式中使用分区表的所有列
EN

Stack Overflow用户
提问于 2013-02-18 17:45:11
回答 1查看 127关注 0票数 1

根据mysql的解释,“分区表的分区表达式中使用的所有列都必须是该表可能具有的每个唯一键的一部分”。为什么只有唯一/主键,为什么不包括其他键?

EN

回答 1

Stack Overflow用户

发布于 2014-01-07 00:25:14

我假设您所说的非唯一键是指索引。

假设您有一个作为平衡树的键,这里是一个B树,您按照一定的标准对其进行分区,以获得所需的分区数量或每个分区中所需的成员数量。如果这样做,因为树是具有唯一键的树,所以您正在将实际数据划分为大小几乎平衡的分区。

现在假设您有一个索引的值的B树(例如secondary index in InnoDB),树中的每个键都指向表的几个数据成员。在这种情况下,根据B树进行分区并不意味着将数据分区为平衡的区块,因此没有必要考虑它。

另一方面,在实践中,至少根据我自己的经验,主键和唯一键是您在设计表时通常必须回答的设计问题,而不是有时将索引添加到表中以提高查询的性能,而这些查询恰好是经常执行的。如果您添加了在所有键和索引中具有分区字段的约束,则必须从分区中删除该字段,或者将分区字段的所有字段作为默认字段添加到所有索引中。因此,这不是一个好的实践。

票数 1
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/14933328

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档