오라클 실행
계획을 해석 할 때요...
우선, 설정된
index를 사용한다는 전제하 에서... 간단하게 다음과 같이
나왔다고 하면요...
INDEX 구성
XN_MASTER_4(ORG_ID_NO, CE_SEQ_NO) - NON-UNIQUE -
TABLE ACCESS(BY
INDEX ROWID) OF 'MASTER'
INDEX (RANGE
SCAN) OF 'XN_MASTER_4' (NON-UNIQUE)
궁금한 점을
차례로 나열 할께요...
1. INDEX
구성에서 NON-UNIQUE와 UNIQUE 차이를
모르겠습니다.
기본적으로
테이블에 기본키를 구성하는 것은 유일한 레코드를 식별해서
데이터의 무결성을 보장하기 위해서인데요...
INDEX에서 쓰이는
UNIQUE도 기본키 처럼, INDEX가 걸린 칼럼으로 유일한 레코드를
식별할 수 있다는 의미인가요 ?
2. 보통 실행계획
예제를 보니까... INDEX (RANGE SCAN) OF 'XN_MASTER_4'
(NON_UNIQUE) 처럼...
NON_UNIQUE 일
경우, 대개 RANGE SCAN(범위 검색)을 하는 것
같은데요...
그 이유는 해당
인텍스의 칼럼 만으로 유일한 레코드를 식별하지 못하기
떄문인가요 ?
좀 더 깊이
생각하면, NON_UNIQUE 인텍스가 설정되어 있더라도, 반드시
RANGE SCAN 만 하는 건 아니겠죠 ?
왜냐하면,
NON_UNIQUE 로 설정 되어 있더라도, 데이터가 유일하게 들어가
있을 경우도 있을 테니까요...
제가 이해하는게
맞는지 모르겠습니다.
3. INDEX를
검색한 후에, TABLE을 ACCESS 하는데요...
BY INDEX ROWID
라는 문구에... GLOBAL 이라는 문구가 나오는 경우가
있는데요...
GLOBAL 이 있을
때는 어떻게 해석 해야 하는지요 ;;
4. 실행계획 내용 중에서, 인덱스가 UNIQUE 일 경우, 반드시
UNIQUE SCAN 되어야 되지 않나요 ?
어떤 경우에는, 인덱스가 UNIQUE 인데, RANGE SCAN을 할
때가 있는 것 같은데...
예 : INDEX
(RANGE SCAN) OF 'XN_MASTER_4' (UNIQUE)
명확한 기준을
잘 모르겠습니다.
너무 기본적인
내용을 질문 하는거 같긴 한데요... 머리속에서 정확히 정립이
되어야 할 것 같아서요...
고수님들 부탁
드려요 ^^
|