【发布时间】:2019-08-13 13:01:28
【问题描述】:
有人可以帮我优化以下查询吗?
此查询从 JOINS 中描述的许多表中获取记录,由于以下联接,它花费了太多时间:
如下所示,我花费了太多时间来执行这两个连接。 有什么方法可以让我更好地实施吗?
SELECT......... .....
LEFT OUTER JOIN .....
LEFT OUTER JOIN
(
SELECT DISTINCT A,B,C
from ABC
where (A,B,C ) not in
(
select A,B,C from
(
SELECT A,B,C,count(*)
FROM ABC
group by A,B,C
having count(*) >1
)
)
) temp1 ON condition1
LEFT OUTER JOIN
(
SELECT DISTINCT X,Y,Z from XYZ
where (X,Y,Z ) not in
(
select X,Y,Z from
(
SELECT X,Y,Z ,count(*)
FROM XYZ
group by X,Y,Z
having count(*) >1
)
)
) temp2 ON condition2 .... ... LEFT OUTER JOIN ....... Where
一些条件
如果我删除上面显示的两个连接,查询会顺利进行。
【问题讨论】:
-
不需要
distinct,因为之前的count消除了重复项。您可以将这些子查询更改为analytic versions。
标签: sql oracle query-performance