본문으로 건너뛰기

3.3 Extended statistics

기본 statistics는 column을 개별로 요약합니다. 서로 상관된 column을 함께 조건으로 쓰면 independence 가정 때문에 estimate가 크게 틀릴 수 있습니다.

CREATE STATISTICS customers_region_country
(dependencies, mcv, ndistinct)
ON region, country
FROM customers;

ANALYZE customers;

종류별 목적은 다음과 같습니다.

  • dependencies: functional dependency를 반영
  • mcv: column 조합의 흔한 값을 보존
  • ndistinct: group 조합의 distinct 수 추정 개선
SELECT statistics_name, attnames, kinds
FROM pg_stats_ext
WHERE tablename = 'customers';

Extended statistics는 모든 predicate를 해결하는 기능이 아니며 PostgreSQL 18에서는 table join selectivity 추정에 사용되지 않습니다. 사용한 expression, operator, PostgreSQL version이 지원하는 범위를 확인합니다.

실험

  1. 상관된 두 조건 query의 estimate factor를 기록합니다.
  2. Statistics object를 만듭니다.
  3. ANALYZE 후 같은 query를 비교합니다.
  4. Planning time과 catalog overhead를 확인합니다.
  5. 필요하지 않은 object는 제거합니다.

참고: Extended Statistics