【发布时间】:2018-12-05 14:56:31
【问题描述】:
如何优化此查询的性能?
SELECT Count(DISTINCT DT.id)
FROM pcwdeptrans DT
INNER JOIN pcwitemtotal IT
ON DT.id = IT.deposittransid
LEFT OUTER JOIN pcwdepreceipt DR
ON DR.deposittransid = DT.id
WHERE (( ( DT.statecode IN ( :1, :2, :3, :4,
:5, :6, :7, :8 )
OR ( DT.statecode IN ( :9 )
AND IT.statecode = :10 ) )
AND DR.requesttime >= :11
AND DR.requesttime <= :12
AND DR.userid = :13 ))
如果您认为语法不正确,请帮助我正确的语法。
但这是一个应用程序查询,从 AWR 报告中识别为性能分析的一部分
摘自 AWR:
来自测试数据库的执行计划(产品会有所不同):
【问题讨论】:
-
您的
WHERE子句正在将外连接变成内连接——如果我没看错括号的话。 -
我同意戈登的观点。在开始调整之前,您应该确保您的查询功能正确。
标签: sql oracle performance sql-tuning