오라클 결합인덱스 질문하나만 하고 갈께요~ 0 2 3,473

by 라희파더 [2013.10.06 03:41:15]


오라클 성능고도화 책을 보다가 궁금한게 생겨서 질문하나 하겠습니다.

인덱스 부분에..

'오라클은 인덱스 구성 컬럼중(결합인덱스) 하나라도 NULL 값이 아닌 레코드는 인덱스에 저장되기 때문이다.
참고로 오라클은 NULL 값을 맨뒤에 저장한다.'

이문장이 궁금하여 기본테이블 중에 EMP 테이블 컬럼중에 JOB 컬럼과 ENAME 컬럼 몇개를 널값으로 UPDATE 치고

두개의 컬럼을 결합인덱스로 생성을 해보았습니다. 생성이 잘되더군요;;

결합인덱스 컬럼중 한개의 컬럼은 NULL 값이 아닌 컬럼으로 구성된다는 말이 정확히 무슨말인지 의미를 모르겠네요.

알려주시면 감사하겠습니다 ^^;
by 마농 [2013.10.07 08:39:02]

인덱스에는 널이 저장되지 않는다고 알려져 있죠.
그러나 이는 단일 인덱스의 경우에 한한 것이고
결합인덱스의 경우엔 모든 항목이 널이 아니라면
다시 말해, 한개 항목만 널이 아니라면 인덱스에 저장됩니다.
인덱스에 저장된는 값들은 정렬되어 저장이 되는데
이 때 널값의 위치가 맨 마지막에 정렬된다는 의미죠.
예를 들어 두개 항목 결합인덱스에 데이터 값이 다음과 같다면
1, 1
1, 2
1, Null
Null, 1
Null, 2
Null, Null
두개 항목이 모두 널인 행은 인덱스에 저장되지 않고 나머지 5개 행만 저장되는데
저장 순서는 다음과 같이 널이 마지막에 정렬되는 것이죠.
1, 1
1, 2
1, Null
Null, 1
Null, 2

by 라희파더 [2013.10.10 00:29:47]
감사합니다 깔끔하게 정리 되었습니다 ^^
댓글등록
SQL문을 포맷에 맞게(깔끔하게) 등록하려면 code() 버튼을 클릭하여 작성 하시면 됩니다.
로그인 사용자만 댓글을 작성 할 수 있습니다. 로그인, 회원가입