MySql分区
分区代码
1 Alter table PostReplys partition by range(PostId) 2 ( 3 partition p1 values less than (20000), 4 partition p2 values less than (40000), 5 partition p3 values less than (60000), 6 partition p4 values less than maxvalue 7 );
输入上面的代码之后会提示:A PRIMARY KEY must include all columns in the table's partitioning function(主键必须包含表分区函数中的所有列),SqlServer和orcale数据库对这个没有限制
解决方案:创建分区的时候,这个主键必须要是分区的一部分, 或者,这张表就不要创建主键
删除主键:
分区好了,但是如果根据主键来删除.. --- 我保证这个数据是自增 不是主键,则没有索引,当mysql发现如果没有主键,则会给我们创建一个主键索引,rowid ,对 我们性能提升不大。当他发现我们当前的库里面,存在一个唯一,而且不为null 的索引的,时候,则吧当前这个索引变成主键索引,就不需要rowid
所以接下来就创建一个唯一并且不为null 的索引
CREATE UNIQUE INDEX index_PostReplys on
PostReplys(id)
这个时候会报错: A PRIMARY KEY must include all columns in the table's partitioning function
将分区字段加入索引,代码如下:
CREATE UNIQUE INDEX index_PostReplys on PostReplys(id,PostId)
这样分区就做好了。
后续:用雪花算法生成唯一ID

浙公网安备 33010602011771号