sql >> Database >  >> RDS >> PostgreSQL

Controleer statistische doelen in PostgreSQL

De instelling voor het statistiekdoel wordt per kolom opgeslagen in de catalogustabel pg_attribute . Je kunt het als volgt instellen:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

En controleer het als volgt:

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

Of je kijkt gewoon naar het aanmaakscript in de objectbrowser van pgAdmin, waar het wordt toegevoegd als de waarde verschilt van de standaardwaarde in default_statistics_target .

Ik citeer de handleiding op attstattarget :

attstattarget bepaalt het detailniveau van de statistieken die voor deze kolom zijn verzameld door ANALYZE . Een nulwaarde geeft aan dat er geen statistieken moeten worden verzameld. Een negatieve waarde zegt dat het doel van de standaardstatistieken van het systeem moet worden gebruikt. De exacte betekenis van positieve waarden is afhankelijk van het gegevenstype. Voor scalaire gegevenstypen is attstattarget zowel het doelaantal "meest voorkomende waarden" dat moet worden verzameld als het doelaantal histogrambakken dat moet worden gemaakt.

Vet benadruk de mijne.

Statistieken voor gewone indexkolommen zijn identiek aan kolomstatistieken en hebben geen afzonderlijke vermeldingen in statistiekentabellen. Maar Postgres verzamelt afzonderlijke statistieken voor index expressies . Die kunnen op een vergelijkbare manier worden aangepast:

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

Als er geen echte kolomnamen zijn, worden rangtelwoorden gebruikt om indexkolommen aan te spreken, die overeenkomen met pg_attribute.attnum :

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

De instelling heeft alleen daadwerkelijk invloed op kolomstatistieken de volgende keer ANALYZE wordt handmatig uitgevoerd of door autovacuum .



  1. JSON_STORAGE_FREE() – Ontdek hoeveel opslagruimte vrijkwam na een update van een JSON-document in MySQL

  2. Bouw een contactenboek met Python, PyQt en SQLite

  3. PGError:ERROR:aggregaties niet toegestaan ​​in WHERE-clausule op een AR-query van een object en zijn has_many objecten

  4. Typen SQL Server-cursor - Wat is het verschil tussen LOKALE EN GLOBALE cursor | SQL Server-zelfstudie / TSQL-zelfstudie