3

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

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

如您所见,我需要保证 3 列是唯一的(id、username、username_md5)。现在,我想对 project_id 列进行 RANGE 分区。我想出的唯一解决方案是为所有这些列制作一个丑陋的 4 列 PRIMARY KEY(分区要求分区表达式中的所有列都必须是每个唯一键的一部分)。

现在,我想知道

A) 4 列的主键是否很好并且可用?

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

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

4

1 回答 1

1

您可以删除您的键/唯一键,并使其成为一个简单的键,而不是在 project_id 上做一个简单的范围分区,现在它确实需要成为键

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

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

  • 在应用层做
  • 使用带有选择的嵌套插入来执行此操作
  • 您可以使用添加了唯一约束的附加表(仅组合),保留对表中组合的引用
于 2013-03-07T10:09:35.150 回答