2008년 2월 3일 일요일

Data Access Pattern - Concatenation

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’

댓글 없음: