ATABLE의 TIME 보다 낮은 것 중에서 가장 최신의 TIME을 가져온 후에
최신의 TIME이 BTABLE에도 같은 TIME이 있으면 데이터를 가져와서 B의 DESC를 가져오려고합니다.
AND C.TIME < A.TIME에서 A.TIME을 가져오는 부분에서 시간이 오래걸립니다.
A테이블 50건 C테이블 20만건 기준 3초 정도 나오네요
B테이블에서 시간은 중복되지않습니다.
AND C.TIME < A.TIME만 빼거나 AND C.TIME < '20240708' 이런식으로 바꿔주면 바로 조회되는 상황입니다.
원인과 해결 방안이 있을까요??
WITH ATABLE(
SELECT MIN(C.TIME) AS TIME, A.약 10개 FROM AAAAATABLE A
LEFT JOIN CTABLE C
ON A.ID = C.ID
GROUP BY A.약 10개
),
SELECT A.CODE, B.DESC FROM ATABLE A
LEFT JOIN BTABLE B
ON A.CODE =B.CODE
AND B.TIME = (SELECT MAX(TIME) FROM CTABLE C
WHERE C.CODE =B.CODE
AND C.TIME < A.TIME)