IT 이야기/DB

[SQLP 시험대비 요약/단답형] 선택도와 카디널리티

하늘봉 2022. 9. 15. 12:00
반응형

옵티마이저는 쿼리 실행 비용을 계산하기 위해 다양한 통계정보를 사용합니다.

그리고 그 중에서 비용 계산의 출발점이 되는 선택도와 카디널리티에 대해서 알아보겠습니다.

공식을 활용해 답을 구하는 방식으로 단답형 문제 출제될 가능성이 있으니 공식을 꼭 외우시길 당부드립니다.

 

선택도(Selectivity) 

선택도란 전체 레코드 중에서 조건절에 의해 선택되는 레코드 비율이며

선택도를 계산하기 위해서는 NDV가 사용됩니다.

 

NDV :컬럼 값 종류 개수 (Number of Distinct Values)

선택도 = 1 /  NDV

 

카디널리티(Cardinality)

전체 레코드 중에서 조건절에 의해 선택되는 레코드 개수를 뜻 합니다.

 

카디널리티 = 총 로우 수 x 선택도 = 총 로우 수 / NDV

 

예를 들어

상품분류 칼럼에 '가전', '의류', '식음료', '생활용품' 4개의 값이 있을 때 
NDV는 4이고 

아래 조건 절에 대한 선택도는 25% (= 1/4) 다. 
where 상품분류 = '가전'

만약 레코드가 10만 건이면, 카디널리티는 2만 5천이다. (= 10만 * 25%, 10만 / 4)

 

옵티마이저는 이렇게  카디널리티를 구하고, 그만큼의 데이터를 엑세스하는 데 드는 비용을 계산해서
테이블 엑세스 방식, 조인 순서, 조인 방식 등을 결정합니다.

 

 


* 한국데이터산업진흥원의 SQL 전문가 가이드 내용과 디비안의 오라클 성능 고도화 원리와 해법 내용을 기반으로 작성하였습니다.

 

반응형