SELECT
COUNT(DISTINCT BBB.CD_NO) AS CNT
FROM EEE
LEFT JOIN BBB ON BBB.M_NO=EEE.M_NO
LEFT JOIN MMM ON BBB.M_NO=MMM.M_NO
WHERE 1=1
AND E_YMD IN ( SELECT G_YMD FROM GGG WHERE 1=1 AND A_TYPE IN ('01','02','03','04','05','06','07'))
일단, GGG 테이블의 SELECT G_YMD FROM GGG WHERE 1=1 AND A_TYPE IN ('01','02','03','04','05','06','07')
결과쿼리는 64건 정도됩니다.
--> ex)('20090102','20090304',....,'20090727')
EEE 테이블의 자료수는 6만건 정도됩니다.
A_TYPE 의 IN 안의 내용은 바뀔수 있습니다. -->ex)('01','04')
자료를 검색해보니 IN Query 를 사용하면 속도가 많이 떨어진다고 듣긴했지만,
매번 조회할때마다 정확히 2분 38초 걸리네요.
결과값은 잘 반환합니다.
개발자가 자료수가 적을때 테스트를 해보고, 잘 작동되었는데 개발자가 그만두고나서,
사용자가 속도가 너무 느리다고 항의가 들어왔네요.
잘모르는 SQL 문 최적화를 해야하는데 어떤식으로 접근을 해야할지 궁금해서
조언을 듣고자 합니다.
감사합니다.
----------------------------------------------------------------------------
SELECT
COUNT(DISTINCT BBB.CD_NO) AS cnt1
FROM EEE
LEFT JOIN BBB ON BBB.M_NO=EEE.M_NO
LEFT JOIN MMM ON BBB.M_NO=MMM.M_NO
LEFT JOIN GGG ON (E_YMD=GGG.G_YMD)
WHERE 1=1
AND E_YMD >= '20090401'
AND E_YMD <= '20090727'
and
( GGG.A_TYPE='01'
or GGG.A_TYPE='02'
or GGG.A_TYPE='03'
or GGG.A_TYPE='04'
or GGG.A_TYPE='05'
or GGG.A_TYPE='06'
or GGG.A_TYPE='07' )
요렇게 바꿔봤더니 1초 줄어드네요 ;;;
|