【问题标题】:shall I use multiple separate tables or one table with multiple partitions in oracle我应该在 oracle 中使用多个单独的表还是一个具有多个分区的表
【发布时间】:2012-02-28 12:23:55
【问题描述】:
我有一个实体叫它Response,另一个实体叫ResponseType,Response 实体包含ResponseType。
因此,当我构建物理模型时,我对如何实现它感到困惑。
我有两个选择:
- 我可以为每个
ResponseType 创建一个Response 表。
- 我可以创建一个带有
ResponseType 列的全局Response 表,并为每个ResponseType 创建一个分区。
请注意,Response 实体对于每个ResponseType 都是相同的。每个ResponseType 都是等价的。
你的想法是什么?
【问题讨论】:
标签:
oracle
data-storage
database-partitioning
【解决方案1】:
我认为没有任何理由创建单独的表。
您通常会创建一个Response 表、一个ResponseType 表,并在两者之间创建一个外键。类似的东西
CREATE TABLE ResponseType (
ResponseTypeId NUMBER PRIMARY KEY,
<<other columns>>
);
CREATE TABLE Response (
ResponseId NUMBER PRIMARY KEY,
ResponseTypeId NUMBER REFERENCES ResponseType( ResponseTypeId ),
<<other columns>>
);
如果您拥有 Enterprise Edition 并且您还获得了分区选项的许可,并且您的查询在查询 Response 表时将始终指定 ResponseTypeId,并且通常希望读取特定 @ 的所有 Response 行987654327@ 而不是使用索引,对Response 表进行分区可能会带来性能优势。但这是相当多的if 语句。