Create Table Item_Master
(
barcodeKey int identity(1,1) Constraint PK_barcodeKey Primary Key Clustered
,barcode Varchar(17) null
)
Create NonClustered index IX_barcode On Item_Master (barcode)
sp_helpindex Item_master -- 인덱스 정보
IX_barcode nonclustered located on PRIMARY barcode
PK_barcodeKey clustered, unique, primary key located on PRIMARY barcodeKey
Inset 1부터 9까지 (단 2은 맨 마지막 insert.)
Insert into Item_Master (barcode) values ('1' )
Insert into Item_Master (barcode) values ('3' )
Insert into Item_Master (barcode) values ('4' )
Insert into Item_Master (barcode) values ('5' )
Insert into Item_Master (barcode) values ('6' )
Insert into Item_Master (barcode) values ('7' )
Insert into Item_Master (barcode) values ('8' )
Insert into Item_Master (barcode) values ('9' )
Insert into Item_Master (barcode) values ('2' )
select * from Item_Master
barcodeKey , barcode
1 1
9 2
2 3
3 4
4 5
5 6
6 7
7 8
8 9
barcodeKey 가 Clustered 이면
barcodeKey 기준으로 1,2,3,4,5,6,7,8,9 순으로 나와야 하는것 아닌가요.?
Comment 3
-
악마곰
2015.04.01 15:08
-
클러스터드 인덱스를 스캔했다면 클러스터드 인덱스 순서대로 정렬돼서 나왔을텐데요.
제가 테스트 해보니 넌클러스터드 인덱스가 선택이 돼었고
마치 힙테이블 처럼 데이터가 입력된 순서대로 데이터가 나오고 있습니다.
그렇다면 왜 넌클러스터드 인덱스가 선택되었을까요??
질문하신 데이터로만 테스트 했을때
클러스터드 인덱스는 예약된 공간이 4Page였고 넌 클러스터드 인덱스는 예약된 공간이 2Page였습니다.
그래서 넌클러스터드 인덱스가 선택된거 같고.
그렇다면 왜 넌클러스터드 인덱스가 더 작을까?? 하는 이유는
데이터페이지의 구조와 인덱스 페이지의 구조를 공부해봐야 할거 같은데... 오늘은... 하기 싫으네요 ^^
-
희망나라
2015.04.01 16:38
네.답변감사합니다.
실행계획표 보니 넌클러스터 인덱스로 쿼리 했네요.
클러스터드 인덱스가 존재한다고 해서 꼭 클러스터드 인덱스을 사용하는건 아니네요.
감사합니다.
select * from Item_Master
쿼리의 실행계획을 확인해 보시기 바랍니다...
옵티마저가 스스로 판단하여 인덱스를 넌클러스트인 IX_barcode 로 태웠을 것입니다...