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이 지원하는 범위를 확인합니다.
실험
- 상관된 두 조건 query의 estimate factor를 기록합니다.
- Statistics object를 만듭니다.
ANALYZE후 같은 query를 비교합니다.- Planning time과 catalog overhead를 확인합니다.
- 필요하지 않은 object는 제거합니다.