단일 테이블 쿼리 질문입니다. 0 2 1,100

by 손님 [SQL Query] 쿼리 [2010.02.01 14:27:28]



단일 테이블 SELECT 쿼리가 속도가 너무 늦네요 1분 가량..

이쿼리 투닝 방법이 있나요. PK 는 PTLOTNO  컬럼입니다.



SELECT  PTLOTNO AS HTLOTNO
    ,   CHKDT
FROM MES.PTCHECK
WHERE CHKRST ='R' AND PTLOTNO  NOT IN(
    SELECT PTLOTNO FROM MES.PTCHECK WHERE CHKRST IN ('A','B','E','Q') )
AND SAUPCD = '10'
AND PTITEM = '101050070128'

ORDER BY CHKDT

by 호야 [2010.02.01 15:17:53]
SELECT PTLOTNO AS HTLOTNO
, CHKDT
FROM MES.PTCHECK
WHERE
SAUPCD = '10'
AND PTITEM = '101050070128'
AND CHKRST ='R'
ORDER BY CHKDT
와 동일한 자료 엑세스를 하는데요,

즉, PTLOTNO NOT IN(
SELECT PTLOTNO FROM MES.PTCHECK WHERE CHKRST IN ('A','B','E','Q') )

CHKRST ='R' 에서 나온 자료는 상위 서브 쿼리에 나오는 IN A,B,E,Q
의 ACCES 자료와 NOT IN 으로 묶는 다면 모두 참이 되게 되므로
필요 없는 DATA ACCESS 라고 할수 있네요

by 현 [2010.02.01 15:40:38]
일단 호야님 말씀대로 서브쿼리는 불필요한 access네요.

인덱스 구조와 트레이스를 봐야 정확히 알 수 있겠지만,
PTITEM + SAUPCD + CHKRST 로 인덱스가 있다면 최선이겠네요. (현 쿼리로는 순서는 바뀌어도 됩니다.)
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입