Mysql:没有主键的分区

时间:2013-03-07 10:00:21

标签: mysql partitioning

我有下表有大量数据,这就是我想拆分或分区的原因。问题是我想通过一个没有主键的列进行分区:project_id。在我的情况下,将有最多2个或3个不同的项目ID ...

- id (PRIMARY KEY, AUTO INCREMENT)
- project_id (INT)
- username (UNIQUE)
- username_md5 (UNIQUE)
(- ... more but irrelevant columns)

正如您所看到的,我有3列需要保证是UNIQUE(id,username,username_md5)。 现在,我想在project_id列上进行RANGE分区。 我想出的唯一解决方案是为所有列创建一个丑陋的4列PRIMARY KEY(分区要求分区表达式中的所有列必须是每个唯一键的一部分)。

现在,我想知道

A)是一个4列的主键,可以使用吗?

B)我的分区有更好的解决方案吗?

C)否则我会通过创建"动态"手动完成。我拥有的每个project_id的表,这可能是最简单的解决方案吗?

1 个答案:

答案 0 :(得分:1)

您可以删除 /唯一键,并将其设为简单键,而不是在project_id上执行简单的范围分区,现在它确实需要是密钥

您仍然可以快速访问,因为这些字段已编制索引。

您可能仍希望保留唯一性:

  • 在应用程序层中执行
  • 使用带有选择
  • 的嵌套插入来执行此操作
  • 您可以使用附加表格添加其唯一约束(仅限组合),对表格中的组合保持引用