Nastavení cíle statistiky je uloženo pro každý sloupec v katalogové tabulce pg_attribute
. Můžete to nastavit takto:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
A zkontrolujte to takto:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Nebo se stačí podívat na skript pro vytvoření v prohlížeči objektů pgAdmin, kde je připojen, pokud se hodnota liší od výchozí hodnoty v default_statistics_target
.
Cituji manuál na attstattarget
:
attstattarget řídí úroveň podrobností statistik nashromážděných pro tento sloupec pomocí
ANALYZE
. Nulová hodnota znamená, že by neměly být shromažďovány žádné statistiky. Záporná hodnota říká, že se má použít výchozí cíl statistiky systému. Přesný význam kladných hodnot je závislý na datovém typu. U skalárních datových typů je attstattarget jak cílový počet „nejběžnějších hodnot“, které se mají shromáždit, tak cílový počet přihrádek histogramů k vytvoření.
Tučné zdůrazněte můj.
Statistiky pro sloupce prostého indexu jsou totožné se statistikami sloupců a nemají žádné samostatné položky v tabulkách statistik. Postgres však shromažďuje samostatné statistiky pro indexové výrazy . Ty lze vyladit podobným způsobem:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
Při absenci skutečných názvů sloupců se k adresování sloupců indexu používají pořadová čísla, která odpovídají pg_attribute.attnum
:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
Nastavení ve skutečnosti ovlivní statistiku sloupců až při příštím ANALYZE
se spouští ručně nebo pomocí autovacuum
.