Ustawienie celu statystyk jest przechowywane na kolumnę w tabeli katalogu pg_attribute
. Możesz to ustawić w następujący sposób:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
I sprawdź to w ten sposób:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Lub po prostu patrzysz na skrypt tworzenia w przeglądarce obiektów pgAdmin, gdzie jest on dołączany, jeśli wartość różni się od domyślnej w default_statistics_target
.
Cytuję instrukcję na attstattarget
:
attstattarget kontroluje poziom szczegółowości statystyk zgromadzonych dla tej kolumny przez ANALYZE
. Wartość zerowa oznacza, że nie należy zbierać żadnych statystyk. Wartość ujemna oznacza, że należy użyć celu domyślnych statystyk systemu. Dokładne znaczenie wartości dodatnich zależy od typu danych. W przypadku skalarnych typów danych attstattarget to zarówno docelowa liczba „najczęstszych wartości” do zebrania, jak i docelowa liczba pojemników histogramu do utworzenia.
Pogrubienie podkreślenie moje.
Statystyki dla kolumn z indeksem zwykłym są takie same jak statystyki kolumn i nie mają oddzielnych wpisów w tabelach statystyk. Ale Postgres zbiera osobne statystyki dla wyrażeń indeksu . Można je dostosować w podobny sposób:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
W przypadku braku rzeczywistych nazw kolumn, liczby porządkowe są używane do adresowania kolumn indeksowych, które odpowiadają pg_attribute.attnum
:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
To ustawienie w rzeczywistości wpływa na statystyki kolumn tylko przy następnym ANALYZE
jest uruchamiany ręcznie lub przez autovacuum
.