【发布时间】:2013-02-12 20:33:00
【问题描述】:
我有两个如下所示的表:
table A: FieldID NUMBER (PK), other non-relevant fields
table B: FieldID NUMBER (PK/FK), other non-relevant fields
表格映射为 1 : 0..1 关系。具体来说,在表 A 中插入新行后,在未来的某个时间点,表 B 将填充额外的数据。
这种设计最初优于唯一的扩展表,以便在任何地方都有不可为空的字段(因为无法预测何时填充数据的“B”部分)。
现在...从 A 和 B 中选择连接的性能非常糟糕。我们正在讨论两个表中的几十万行,但是简单的内部连接需要大量时间才能完成。
除了将字段从 B 移到 A 中(为了避免额外的“空”检查,我不想这样做),我还可以如何提高我的性能?
【问题讨论】:
-
定义“糟糕”,特别是单PK查询还是FULL TABLE SCAN?
-
你好,这是一个PK搜索。如果我(例如)从 A、B 中选择 *,其中 A.FieldID = B.FieldID 和 rownum
-
请发布解释计划。 Tracing the query 也可能有助于理解为什么需要这么多时间。
标签: performance oracle query-optimization