sql >> Database teknologi >  >> RDS >> PostgreSQL

Tjek statistikmål i PostgreSQL

Indstillingen for statistikmålet gemmes pr. kolonne i katalogtabellen pg_attribute . Du kan indstille det sådan her:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

Og tjek det sådan her:

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

Eller du ser bare på oprettelsesscriptet i objektbrowseren i pgAdmin, hvor det tilføjes, hvis værdien er forskellig fra standarden i default_statistics_target .

Jeg citerer manualen på attstattarget :

attstattarget styrer detaljeringsgraden af ​​statistik akkumuleret for denne kolonne ved at ANALYZE . En nulværdi angiver, at der ikke skal indsamles statistik. En negativ værdi siger, at systemets standardstatistikmål skal bruges. Den nøjagtige betydning af positive værdier er datatypeafhængig. For skalære datatyper er attstattarget både målantallet for "mest almindelige værdier", der skal indsamles, og målantallet af histogrambakker, der skal oprettes.

Fed vægt min.

Statistik for almindelige indekskolonner er identiske med kolonnestatistikker og har ingen separate poster i statistiktabeller. Men Postgres indsamler separate statistikker for indeksudtryk . Disse kan justeres på en lignende måde:

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

I mangel af egentlige kolonnenavne bruges ordenstal til at adressere indekskolonner, som svarer til pg_attribute.attnum :

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

Indstillingen påvirker faktisk kun kolonnestatistikken næste gang ANALYZE køres manuelt eller med autovacuum .



  1. Skift PostgreSql-databasekodning

  2. Dvale native forespørgsel - char(3) kolonne

  3. Smukke blokke af kedelplade

  4. CURRENT_DATE Funktion i Oracle