我想利用 MySQL 5.1 中的新分区,但使用标准的 ActiveRecord 模型。我遇到的问题是要使用分区表上的主键必须包含分区函数中使用的列。(http://dev.mysql.com/doc/refman/5.1/en/partitioning-limitations-partitioning-keys-unique-keys.html)
现在,我想要一个自动递增的“id”字段(通常用作 Rails 中的主键),但我想使用另一列进行分区,在本例中为“task_id”。至关重要的是,我不想在我的 Rails 应用程序中使用复合主键。我的问题是这样的:
如果我按如下方式设置表:
"CREATE TABLE `annotations` (
`id` int(11) NOT NULL AUTO_INCREMENT,
`task_id` int(11) DEFAULT NULL,
`user_id` int(11) DEFAULT NULL,
`value` text,
`created_at` datetime DEFAULT NULL,
`updated_at` datetime DEFAULT NULL,
PRIMARY KEY (`id`, `task_id`),
KEY `index_annotations_on_task_id` (`task_id`),
KEY `index_annotations_on_user_id` (`user_id`)
) ENGINE=InnoDB AUTO_INCREMENT=1 DEFAULT CHARSET=utf8
PARTITION BY RANGE(task_id)(
PARTITION 1_to_5 VALUES LESS THAN (6),
PARTITION 6_to_10 VALUES LESS THAN (11),
PARTITION 11_to_15 VALUES LESS THAN (16))"
我的主键由 'id' 和 'task_id' 列组成,并且我没有对 ActiveRecord 模型做任何特别的事情,我是否会为将来的任何头痛做好准备?
基本上,我正在创建一个基于两列的主键表,但没有告诉 ActiveRecord 第二列,因为我仍然有一个自动递增的 id 字段 - 任何人都可以看到这种方法有什么问题吗?