NOT IN의 속도개선 문제입니다. 오늘 멘붕와서 하다가 다른방식으로 접근했네요..
--------
A, B 테이블이 있는데
각각 값이 250개 100개가 있는데
A테이블에서 B테이블의 데이터를 제외하고 뽑아야하는 쿼리..
보통 NOT IN 또는 NOT EXISTS를 사용하는데
이 데이터들이 키가 아니고 인덱스가 없을때 속도면에서 골치아프더군요
오늘 요놈들 NOT IN으로 뽑아보니 몇개 되지도 않는게 9.5초가 걸리네요..
그래서 집합개념으로 접근해봤습니다.
B가 A의 부분집할일경우 // 전제조건입니다. 꼭 B가 A의 부분집합이어야 합니다.
SELECT *
(
SELECT ~~ FROM
TABLE A,
TABLE B
)WHERE A.AA = B.AA(+)
WHERE B.AA IS NOT NULL //아우트조인을 하면 당연히 A에 없는 B는 널이 떨어지겠죠.
이렇게 하면 0.4초안에 떨어지네요 ㅎㅎ
B가 A의부분집합이기에 가능한 쿼리구요.. 담에 이런걸로 저처럼 멘붕당하지 않길 바래서 올립니다.
'Programming > 과거포스팅' 카테고리의 다른 글
Node.js 배경 (0) | 2012.11.13 |
---|---|
자바 날짜 차이 구하기 (0) | 2012.11.12 |
안드로이드 구글맵 말풍선 이미지(Android GoogleMap Balloon Image) (0) | 2012.10.23 |
안드로이드 구글 맵 연동_2(Android GoogleMap) (0) | 2012.10.16 |
안드로이드 구글 맵 연동_1 (구글맵 키 발급) (0) | 2012.10.16 |