sql >> Databáze >  >> RDS >> PostgreSQL

Zkontrolujte statistické cíle v PostgreSQL

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 .



  1. Jak volat funkci Oracle z Hibernate s návratovým parametrem?

  2. Plně rozumím PDO ATTR_PERSISTENT

  3. Jak LocalTimeStamp() funguje v PostgreSQL

  4. Nástroj GUI pro PostgreSQL