[SQL튜닝]OR연산을 Union으로...
아래 쿼리를 이해하자.
-- myemp1, myemp_old 테이블은 같은 구조를 가지며,
-- myemp1 : 2000만건, myemp1_old : 300만건
-- ename, sal 칼럼에 대해 각각 인덱스가 생성되어 있다.
-- 6.5초
SELECT e1.ename FROM myemp1 e1, myemp1_old e2
WHERE e1.ename = e2.ename
OR e1.sal = e2.sal
-- 아래 쿼리가 조금 빠르다.
-- 6.0초
SELECT e1.ename FROM myemp1 e1, myemp1_old e2
WHERE e1.ename = e2.ename
union all
SELECT e1.ename FROM myemp1 e1, myemp1_old e2
WHERE e1.sal = e2.sal
인덱스가 생성된 칼럼에 대해 or 로 WHERE절을 사용하는 경우 union all을 사용하는것이 조금 빠르다.
댓글 없음:
댓글 쓰기