【发布时间】:2017-12-12 21:42:15
【问题描述】:
我们怎样才能减少下面查询的执行时间?
需要帮助以更有效的方式重写以下 SQL 查询?
SELECT A.*, C.*, F.*, D.*
FROM TABLE1 A INNER JOIN
TABLE2 C
ON A.CODE = C.CODE INNER JOIN
TABLE3 D
ON A.CODE = D.CODE INNER JOIN
TABLE4 F
ON A.CODE = F.CODE
WHERE D.IND1 = 'N' AND
D.IND2 = 'N' AND
D.EFF_DATE = (SELECT MAX(X.EFF_DATE)
FROM TABLE3 X
WHERE X.CODE = D.CODE AND X.EFF_DATE <= A.EFFECTIVE_DATE
) AND
F.EFF_DATE = (SELECT MAX(Z.EFF_DATE)
FROM TABLE4 Z
WHERE Z.DETAIL_CODE = F.DETAIL_CODE AND Z.EFF_DATE <= A.EFFECTIVE_DATE
)
【问题讨论】:
-
我认为如果您提供示例数据集,您将获得更快、更有效的答案。通常,人们使用sqlfiddle.com 来提供这些集合。
-
你没有提供样本数据,没有执行计划,没有数据模型,没有解释业务规则,没有数据量或倾斜的指标,没有关于索引、统计等的信息。我们无法就重写此查询给您任何有意义的建议。
标签: sql oracle performance query-optimization