sql >> Databasteknik >  >> RDS >> PostgreSQL

Kontrollera statistikmål i PostgreSQL

Inställningen för statistikmålet lagras per kolumn i katalogtabellen pg_attribute . Du kan ställa in det så här:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

Och kontrollera det så här:

SELECT attstattarget
FROM   pg_attribute
WHERE  attrelid = 'myschama.mytable'::regclass
AND    attname = 'mycolumn';

Eller så tittar du bara på skapandeskriptet i objektwebbläsaren för pgAdmin, där det läggs till om värdet är skilt från standardvärdet i default_statistics_target .

Jag citerar manualen på attstattarget :

attstattarget styr detaljnivån för statistik som samlas in för denna kolumn med ANALYZE . Ett nollvärde indikerar att ingen statistik ska samlas in. Ett negativt värde säger att systemets standardstatistikmål ska användas. Den exakta innebörden av positiva värden är datatypberoende. För skalära datatyper är attstattarget både målantalet för "vanligaste värden" att samla in och målantalet histogramfack som ska skapas.

Fet betoning min.

Statistik för vanliga indexkolumner är identisk med kolumnstatistik och har inga separata poster i statistiktabeller. Men Postgres samlar in separat statistik för indexuttryck . De kan justeras på liknande sätt:

ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;

I avsaknad av faktiska kolumnnamn används ordningstal för att adressera indexkolumner, som motsvarar pg_attribute.attnum :

SELECT attstattarget
FROM   pg_attribute
WHERE  attrelid = 'myschama.myidx'::regclass
AND    attnum = 1;

Inställningen påverkar faktiskt bara kolumnstatistik nästa gång ANALYZE körs manuellt eller med autovacuum .



  1. Guide till designdatabas för kalenderhändelse och påminnelse i MySQL

  2. Jämföra objekt efter värde. Del 6:Struktur Jämställdhetsimplementering

  3. Hur TIME_TO_SEC() fungerar i MariaDB

  4. psycopg2:infoga flera rader med en fråga