联接AND前一个表为n

时间:2019-05-11 14:06:43

标签: sql oracle join null

我有以下查询。

 WITH JOIN_LOGIC AS (
     SELECT * 
     FROM TABLEB 
         JOIN TABLE D ON B.ID = D.ID 
         JOIN E ON B.ID = E.ID
 ), DAYS_BETWEEN_LOGIC AS (
        SELECT * 
        FROM TABLEC 
            JOIN E ON TABLEC.ID = E.ID
            JOIN F ON E.ID = FI.ID
)
SELECT * 
FROM HCA
     LEFT JOIN JOIN_LOGIC JL ON HCA.ALERT_ID = JL.ALERT_ID
     LEFT JOIN DAYS_BETWEEN_LOGIC DBL  ON HCA.ALERT_ID = DBL.ALERT_ID
          AND JL.ALERT_ID IS NULL

AND JL.ALERT_ID IS NULL挂断了,需要两个多小时来处理。当我注释掉左联接时,查询需要几分钟。 CTE不大,有几十万行。

我的问题是,应该避免这种行为,还是在我必须深入执行计划之前有更好的方法?

0 个答案:

没有答案