BusinessEntityID로 인덱스 생성 했습니다.
create clustered index idx_person1_c on Person1_c (BusinessEntityID);
create nonclustered index idx_person1_nc on Person1_nc (BusinessEntityID);
Person1(인덱스없음), Person1_c(클러스터형 인덱스), Person1_nc(비클러스터형 인덱스)
근데 FirstName='Adam'를 찾는 질의를 할 때
인덱스인 BusinessEntityID로 검색하지 않았으니까
select * from Person1 where FirstName='Adam';
select * from Person1_c where FirstName='Adam';
select * from Person1_nc where FirstName='Adam';
이 위의 검색 결과가 다 같아야 하는거 아닌가요?
메시지를 보면 논리적 읽기 수가 각각
193
200
55
이고,
실행계획도 보면
테이블 스캔
Clustered Index Scan
Index Seek & RID Lookup
입니다.
설명 부탁드립니다.
Comment 3
-
구로동라이더
2019.10.10 10:56
결과,쿼리 수행 결과는 같으실꺼우요.. Operation 이 달라져, 논리적 읽기가 달라지는 걸로 보이네요..테이블 스캔 >> Cluster Index 가 없는 테이블 Scan --> 193Clustered Index Scan -> Cluster Index 가 있는 Cluster Index Scan --> 200Index Seek & RID Lookup -> Index Seek 후, Table Access -> 55각각의 Plan Operation 의미를 이해하시면 알수 있습니다.각각의 Operation 이 어떤 의미인지 찾아보세요 ㅇ.ㅇ -
향지
2019.10.14 21:00
인덱스가 아무것도 없는거랑
클러스터 인덱스랑
데이터 저장 구조가 달라집니다. (클러스터 인덱스가 추가 정보가 들어가서 조금 더 커집니다.)
Person1_nc 결과는 FirstName으로 인덱스가 걸리지 않았으면 Index Seek & RID Lookup에 저 읽기수가 안나올거 같습니다.
-
루디먼트
2019.11.20 19:33
전체 테스트 스크립트 올려 보세요.
테이블 스키마, 데이터 생성 과정 모두여~