편향된 분포

희소한 값은 평균으로 추정하면 틀어집니다

히스토그램은 컬럼의 값을 똑같이 취급하지 않고, 어떤 값이 자주 나오고 어떤 값이 드문지를 남깁니다. 그래서 옵티마이저가 선택도를 실제 분포에 가깝게 계산할 수 있습니다.

실제 status 분포
1,000,000행 기준
active
98%
inactive
1.5%
banned
0.5%
히스토그램 없음

NDV만 보고 균등하다고 가정

값이 3개면 각 값이 대략 1/3씩 나온다고 본다. banned가 희소하다는 정보는 없다.

예상 행 수
333K
1,000,000행 중 약 33%를 읽는다고 추정
선택되기 쉬운 계획
Plan: Full Table Scan
히스토그램 있음

값별 빈도를 그대로 반영

banned = 0.5%처럼 드문 값을 따로 인식한다. 선택도가 실제 분포에 가까워진다.

예상 행 수
5K
1,000,000행 중 약 0.5%만 읽는다고 추정
선택되기 쉬운 계획
Plan: Index Range Scan
히스토그램의 역할은 값을 예쁘게 분류하는 것이 아니라, 편향된 분포를 통계에 남겨 실행 계획이 달라질 정도의 선택도 차이를 옵티마이저가 읽게 만드는 것입니다.