비클러스터형 인덱스는 클러스터형 인덱스와 다르게 테이블 내에 데이터를 실제로 정렬하지는 않는다.
비클러스터형 인덱스는 인덱스와 데이터는 서로 다른 곳에 저장이 된다.
이러한 특징으로 비클러스터형 인덱스는 테이블 당 2개 이상의 비클러스터형 인덱스가 허용된다.
클러스터형 인덱스가 테이블당 하나의 인덱스가 있는 것과 다르게 비클러스터형 인덱스는 하나의 테이블에 여러 개의 인덱스를 만들 수 있다.
여기서 중요한 사실 하나는 테이블 내의 데이터가 클러스터형 인덱스 순서로 정렬이 되는 반면 비클러스터형 인덱스의 데이터는 어떤 특정한 순서로 정렬이 된다. 비클러스터형 인덱스는 컬럼에 값들과 그 컬럼값이 속하는 레코드의 주소가 포함된다.
인덱스를 생성한 컬럼에 대한 쿼리로 실행되면 데이터베이스는 먼저 인덱스로 이동하여 테이블에서 해당 행의 주소를 찾는다. 그런 다음 해당 레코드 주소로 이동하여 다른 열 값을 가져옵니다. 이 추가 단계로 인해 비 클러스터형 인덱스가 클러스터형 인덱스보다 느리다.
비클러스터형 인덱스 만들기
Create Nonclustered Index IX_tblStudent_Name
On Student(name Asc)
위의 스크립트는 학생 테이블의“이름”열로 비 클러스터형 인덱스를 만든다. 인덱스는 이름을 기준으로 오름차순으로 정렬한다. 앞서 언급했듯이 테이블 데이터와 인덱스는 다른 위치에 저장된다. 인덱스는 생성할 당시의 정의에 따라 정렬되며 테이블과 별도로 저장된다.
이름 | 행주소 |
Fim | 행주소 |
Bim | 행주소 |
Dim | 행주소 |
Cim | 행주소 |
Aim | 행주소 |
IX_tblStudent_Name 인덱스 데이터
'데이터베이스' 카테고리의 다른 글
테이블 반환 함수(table-valued function) (0) | 2020.06.03 |
---|---|
반환 상태가 있는 저장 프로시저 사용 (0) | 2020.06.02 |
Custom Clustered Index (0) | 2020.05.30 |
Clustered Index (0) | 2020.05.29 |
Convert 함수를 이용한 날짜 및 시간 스타일 변환 (0) | 2020.05.28 |