Mysql从5.1开始推出了Partition的功能,的确是非常好的特性,能够帮助解决非常多的问题。在创建partition的过程中,有一个必须注意的地方:参与partition的所有列都必须出现在所有的unique索引中。
比如一个表有两个索引 unique index1(col1,col2), unique index2(col1), 创建partition时 by range(col1), 创建成功;但是by range(col2), 则创建失败。因为两个索引均含有col1, 但只有一个索引含有列col2.
表的primary key也是unique key的一种,也需要满足上面所说的约束。
还有一点需要注意,如果表结构中没有任何unique key, 则在任何列上均可创建分区,此时是没有什么限制的。
更详细内容,参见Mysql 的手册:http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html