【发布时间】:2019-12-03 12:45:41
【问题描述】:
我有以下查询是性能下降的原因,有人可以帮助重写这个查询,以便它可以更好地执行。
SELECT *
FROM (SELECT ITEMDETAIL0_.depid AS COL_0_0_
FROM xxxxxxxxxx.rptdepitemdetails ITEMDETAIL0_
cross join xxxxxxxxxx.xxxxxxxxxxorg ORGANIZATI1_
WHERE ITEMDETAIL0_.bankname =?
AND ITEMDETAIL0_.customerid = ORGANIZATI1_.id
AND ORGANIZATI1_.uniquename =?
AND ITEMDETAIL0_.createuser =?
AND ITEMDETAIL0_.createdate >=?
AND ITEMDETAIL0_.createdate <=?
AND ( ITEMDETAIL0_.captureworktype IN ( ? ) )
AND ( ITEMDETAIL0_.depstatus IN ( ?, ? ) )
GROUP BY ITEMDETAIL0_.depid,
ITEMDETAIL0_.createdate
ORDER BY ITEMDETAIL0_.createdate ASC)
WHERE ROWNUM <= ?
【问题讨论】:
-
(1) 用您正在使用的数据库标记您的问题。 (2) 你为什么将
JOIN表示为CROSS JOIN?使用ON子句! -
你需要说出你想要达到的目标。查看您的查询,我可以说让
CROSS加入无论如何都需要时间 -
很多时候查询调整不依赖于重写查询,而是正确规范化数据和智能使用索引。
-
能否添加查询的解释计划?正确诊断您的问题会容易得多。
-
@Jaisus - 添加了解释计划
标签: sql oracle query-tuning