Birbirine bağımlı kolonlar için extended statistics oluştur (CREATE STATISTICS)
PostgreSQLBakımKomut
-- il ve ilce bağımlı: planner bağımsız varsayıp satır sayısını çok düşük tahmin eder
CREATE STATISTICS musteri_il_ilce_stx (dependencies, ndistinct, mcv) ON il, ilce FROM musteri;
ANALYZE musteri;
-- Toplanan istatistik
SELECT statistics_name, attnames, kinds, n_distinct, dependencies
FROM pg_stats_ext
WHERE tablename = 'musteri';
-- Doğrula: tahmini rows artık actual rows'a yakın olmalı
EXPLAIN (ANALYZE, TIMING OFF)
SELECT * FROM musteri WHERE il = 'Ankara' AND ilce = 'Cankaya';Ne yapar?
Planner'a kolonlar arası bağımlılığı (fonksiyonel bağımlılık, kombinasyon distinct sayısı, ortak en sık değerler) öğretir; çok kolonlu WHERE ve GROUP BY koşullarında satır tahminini düzeltir.
Ne zaman kullanılır?
EXPLAIN ANALYZE'da çok kolonlu filtrelerde tahmini satır sayısı gerçeğin çok altındaysa (ör. 12'ye karşı 570) ve bu yüzden yanlış join yöntemi/index seçiliyorsa.
Dikkat
Etkisi ancak ANALYZE sonrası başlar. Kolon kombinasyonu sayısı istatistik hedefinden (varsayılan 100) çok fazlaysa mcv listesi kombinasyonların çoğunu kapsayamaz; bu durumda mcv, dependencies'in düzelteceği tahmini düzeltmeyebilir. EXPLAIN ile doğrula; gerekirse mcv'yi tanımdan çıkar veya ALTER STATISTICS musteri_il_ilce_stx SET STATISTICS 1000; ile hedefi yükselt. dependencies yalnızca eşitlik/IN koşullarında, ndistinct GROUP BY tahmininde kullanılır. Her tanım ANALYZE süresini uzatır; yalnızca yanlış tahmini kanıtlanmış kolon gruplarına ekle.