让我们有一个简单的产品表。每个产品都有其独特的ID和类别。用户经常按类别搜索,因此我想按类别对产品进行分区。一个分区中的每个类别如何按不在唯一索引中的列对MySQL表进行分区
我该怎么做?因为我当然在我的ID列上有一个主键,并且需要我的唯一ID。在每个类别中不是唯一的。
但是partitiong有这样的限制:“表上的每个唯一键必须使用表的分区表达式中的每一列”。
那么,这不会使分区有点没用?或者我错过了什么?我该怎么办?
http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html
当然,但ID不会是唯一的,但在类只有唯一的,这是我不想要的。 Replace Into将停止工作。如果产品类别改变,产品将被复制。但无论如何,谢谢你的回答。 – 2012-08-02 07:57:59
不可以。将字段添加到主键无法使其成为non_unique,正如我在答案中所写的那样。你为什么不试试看它的工作原理?我已经在一个大的日志表(2百万到5百万条记录)上使用了这种分区方法:白天允许非常快速的SELECT,并且可以非常快速地删除特定日期的所有记录(只需删除一个分区)。 – Jocelyn 2012-08-02 08:49:53
哦,不,我知道PRIMARY KEY仍然是唯一的。但是现在仅仅是密钥的一部分的ID将不再是唯一的,因为类别列中的不同值可以使密钥唯一,尽管ID将是相同的。但它看起来像MySQL就这样工作(虽然它没有多大意义),我将不得不忍受它。无论如何,感谢你的努力。 – 2012-08-03 08:52:13