1.발생규칙
OR조건이나 IN 상수조건이 있는경우에 걸리는 두개의 조건을 개별적으로 검색하고, 나머지 조건도 전부 적용해서 검색 한 후, 나중에 이 결과를 합치게 된다.이 내용이 플랜에는 CONCATENATION으로 표현 된다.
2.Access 방식
SELECT /*+USE_CONCAT*/ columns
FROM tables
WHERE (조건1 OR 조건2)
AND 조건3;
위처럼 조건절이 되는경우 아래처럼 실행계획이 풀린다.
SELECT columnsFROM tables
WHERE 조건1
AND 조건3
UNION ALL
SELECT columns
FROM tables
WHERE 조건2
AND 조건3;
3.적용범위
-인덱스 조건이 똑똑하여 빠른 OUTPUT 이 보장될경우(OLTP)
-ORDER BY절이 있을 경우 결과에 대한 정렬 처리가 추가로 필요하게 되므로, 결과값이 많을 경우에는 불리하게 작용할 수 있다.
-대용량 배치쿼리에서는 피한다.
4.Hint
/*+USE_CONCAT*/
5.PLAN
SELECT /*+USE_CONCAT*/ columns
FROM tables
WHERE (조건1 OR 조건2)
AND 조건3;
CONCATENATION
TABLE ACCESS (BY ROWID) OF ‘TEST_TAB1’
INDEX (RANGE SCAN) OF ‘IDX1’
TABLE ACCESS (BY ROWID) OF ‘TEST_TAB1’
INDEX (RANGE SCAN) OF ‘IDX1’
댓글 없음:
댓글 쓰기