mysql分区问题

pursuer_chen 2016-08-11 10:48:25
谁能解释一下mysqld分区为什么必须是主键或者唯一键的全部或者一部分吗(如果表存在主键或者唯一键)
...全文
284 4 打赏 收藏 转发到动态 举报
写回复
用AI写文章
4 条回复
切换为时间正序
请发表友善的回复…
发表回复
  • 打赏
  • 举报
回复
因为表中数据是按照主键顺序来存放的,每张表根据主键构成了一颗B+树,实际的数据页只能按照这颗B+树进行排序,分区只是把一个物理文件切割成多个物理文件,依然得遵循此存储规则,所以分区列就得包含在主键中。
zjcxc 2016-08-12
  • 打赏
  • 举报
回复
引用 2 楼 cmh200704 的回复:
你没看明白我的问题,你在表里加主键或者唯一键试试,然后创建分区的字段是另外其他的字段
保证唯一性的需要吧,sql server中的解析,唯一只在每个分区上进行验证,所以如果唯一(主键或unique)不是分区列一部分的话,无法保证其唯一性
pursuer_chen 2016-08-11
  • 打赏
  • 举报
回复
你没看明白我的问题,你在表里加主键或者唯一键试试,然后创建分区的字段是另外其他的字段
zjcxc 2016-08-11
  • 打赏
  • 举报
回复
没这个要求吧?我建了个没有KEY的分区表也没问题啊,数据操作也没发现问题 CREATE TABLE `a` ( `id` int(11) DEFAULT NULL, `v` int(11) DEFAULT NULL ) ENGINE=InnoDB DEFAULT CHARSET=utf8 /*!50100 PARTITION BY RANGE (v) (PARTITION p0 VALUES LESS THAN (0) ENGINE = InnoDB, PARTITION p1 VALUES LESS THAN (100) ENGINE = InnoDB)

56,679

社区成员

发帖
与我相关
我的任务
社区描述
MySQL相关内容讨论专区
社区管理员
  • MySQL
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧