본문 바로가기
개발 용어 정리

[DB] NDV, 카디널리티, 선택도, 밀도란?

by minhyeok.lee 2023. 3. 13.
반응형

NDV(Number of Distinct Value), 카디널리티(Cardinality), 선택도(Selectivity), 밀도(Density)

 

NDV(Number of Distinct Value)

NDV는 특정 컬럼에 unique한 값이 얼마나 있는지 나타낸다.

중복되는 값이 존재하지 않는 primary key와 같이 unique한 속성을 지닌 컬럼의 경우는 테이블의 행수와 개수가 일치한다.

 

카디널리티(Cardinality)

카디널리티(Cardinality)는 특정 데이터 집합의 유니크(Unique)한 값의 개수이다.

NDV와 값이 같다.

주민등록번호와 이름이라는 컬럼이 있는 테이블이 있다고 가정해보자.

주민등록번호는 값이 중복되지 않는 유일한(Unique) 값이다.

이름은 값이 중복되기도 하는 값이다.

그러므로 주민등록번호의 카디널리티가 이름의 카디널리티보다 높다.


선택도(Selectivity)

선택도 = (카디널리티 / 총 레코드 수) * 100

선택도는 데이터 집합에서 특정 값을 얼마나 잘 골라낼 수 있는지에 대한 지표이다.
전체 레코드 중에서 조건절에 의해 선택될 것으로 예상되는 레코드의 비율(%)이다.

선택도가 1이라는 뜻은 모든 값이 유니크하다는 의미다.


선택도는 데이터베이스에서 인덱스를 생성할 컬럼을 고를 때 자주 사용한다.

선택도가 높은 컬럼에 인덱스를 걸면 인덱스가 특정 레코드를 잘 골라내어 인덱스 효율이 높아진다.

반대로 선택도가 낮은 컬럼에 인덱스를 걸게 되면 인덱스 효율이 낮아지고 결국 풀 테이블 스캔으로 플랜이 풀리게 될 수 있다.


Selectivity = ( 조회하는 row / 테이블의 총 row ) * 100

위에서 표현하는 선택도에서는 선택도가 낮을 수록 인덱스 효율이 좋다. (5 ~ 10%가 적당하다)

 

밀도(Density)

밀도 = 1 / NDV

반응형

댓글