我有以下查询。
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不大,有几十万行。
我的问题是,应该避免这种行为,还是在我必须深入执行计划之前有更好的方法?