Hi,all:
我们从昨天开始纠结,为什么MySQL的分区表中唯一键必须加上分区字段?
以主键ID为例。
我们陷入了误区就是,我们一直认为加了分区字段前ID是唯一,加了分区字段后ID还是唯一的?
我们忽略的一点是,我们的表结构变了,索引结构变了,现在的唯一键并不能保证之前的字段是唯一的了,换句话说就是,Mysql的分区表并不能保证单字段唯一。
原因是MySQL的分区表索引都是local的(在Oracle中,local也不要能保证全局唯一)。
所以,MySQL希望你做妥协,要么,你唯一索引去掉,这样你分区表随便建,要么,你把分区键加进之前的唯一索引中,这样MySQL能保证组合唯一。
因为Oracle的索引以及表的物理存储和MySQL不一样。所以,Oracle普通的索引依然能保证单字段唯一,因为Oracle的普通索引不是local的。
Mysql分区表为什么唯一键必须添加分区字段
最新推荐文章于 2025-01-22 10:05:26 发布