본문 바로가기

IT/DB

Covering Index 란..(Clustered/NonClustered Key)

Covering Index(이하 커버링) 란..

 

쿼리의 모든 항목이 인덱스 컬럼으로 이루어진 상태를 이야기한다.

 

해당 내용을 알기 위해선 

클러스터/논클러스터 키에 대해서도 알아야 한다.

Clustered key nonClustered key
- ( 테이블당 한개만 존재)
- PK
- PK가 없을땐 유니크키가 클러스터키가 된다.
- 둘다없으면 히든키(rowId)를 생성한다.(6byte)

non clustered key - 일반적인 index
select name from Users where age = 1;

우리에게 Users 테이블이 있고 해당 테이블에 정보는 아래와 같다고 한다.

컬럼 : id / name / age 

PK: id

index : age

 

위 쿼리를 살펴봤을때 ,

우리는 위에 name컬럼을 보여주기 위해서는 해당 데이터의 블록위치를 알아야한다.

where절에 있는 조건이 index에 부합하더라도 index컬럼외에 다른 컬럼값이 필요하기 때문에

논 클러스터 키와 함께있는 클러스터키를 이용하여 데이터의 블록 위치를 찾을 수 있다.

(논 클러스터키에는 데이터블록위치가 없어 클러스터키가 항상 포함된다)

 

만약 위 쿼리가 아래와 같은 쿼리였다면

select id from Users where id = 1;

PK를 사용하기 때문에 인덱스 타임이 없어지니 접근속도가 빨라진다고 볼 수 있다.

 

 

커버링 인덱스란 위 2번처럼. 실제데이터 접근없이 인덱스로만 쿼리를 완성하는 것이라고 볼 수 있다.

 

추후 실행계획을 통해 데이터블록접근이 있었는지 확인해 볼 수 있다.

 

 

출저 : https://jojoldu.tistory.com/476