IN 과 EXISTS 의 속도 차이 0 2 3,541

by 최명규 [2011.11.13 14:14:28]


안녕하세요 초급 데이터베이스 개발자입니다.

분석 쿼리를 수정 중에 있는데 쿼리가 3분인겁니다;;

그래서 쿼리를 수정해서 13초까지 줄였는데..

IN 을 썻을때 40초 되던게 EXISTS로 바꾸니 13초까지 줄엇어요;

서로 차이가 머길래 이런 속도 차이가 나는거죠?
by finecomp [2011.11.13 15:14:07]
단순히 IN / Exists의 비교는 어렵습니다.
아마도 그 정도의 속도차이가 있다면 실행계획이 서로 다를 것 입니다.
두 쿼리의 실행계획 차이를 확인 해 보세요...Toad, 오렌지등에서 Ctrl+E를 누르면 나옵니다.

by finecomp [2011.11.13 15:51:01]
아무런 정보 없이 질문내용으로만 조심스럽게 추측해보면,
IN조건이 공급자역할로 되어, 이 값을 받는 메인 테이블 선행컬럼의 선택도가 비교적 떨어질거라고 추측해봅니다.(Random Access 횟수 증가로 인한 성능저하 발생)

하지만, 이 컬럼이 Exists로 빠졌을때, 다른 인덱스 또는 테이블 Full scan을 타게되고, Exists절에서 대부분 조인에 성공하는 것으로 필터링 데이터가 구성되었다면,
이런 정도의 속도차이는 나겠지요...;
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입