Die Einstellung für das Statistikziel wird pro Spalte in der Katalogtabelle pg_attribute
gespeichert . Sie können es wie folgt einstellen:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;
Und überprüfen Sie es wie folgt:
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.mytable'::regclass
AND attname = 'mycolumn';
Oder Sie schauen sich einfach das Erstellungsskript im Objektbrowser von pgAdmin an, wo es angehängt wird, wenn sich der Wert von der Vorgabe in default_statistics_target
unterscheidet .
Ich zitiere das Handbuch zu attstattarget
:
attstattarget steuert den Detaillierungsgrad der Statistiken, die für diese Spalte von ANALYZE
gesammelt werden . Ein Nullwert gibt an, dass keine Statistiken erfasst werden sollen. Ein negativer Wert sagt aus, dass das Standardstatistikziel des Systems verwendet werden soll. Die genaue Bedeutung positiver Werte ist datentypabhängig. Bei skalaren Datentypen ist attstattarget sowohl die Zielanzahl der zu erfassenden „häufigsten Werte“ als auch die Zielanzahl der zu erstellenden Histogramm-Bins.
Fett Hervorhebung von mir.
Statistiken für einfache Indexspalten sind identisch mit Spaltenstatistiken und haben keine separaten Einträge in Statistiktabellen. Aber Postgres sammelt separate Statistiken für Index-Ausdrücke . Diese können auf ähnliche Weise angepasst werden:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;
In Ermangelung tatsächlicher Spaltennamen werden Ordnungszahlen verwendet, um Indexspalten zu adressieren, die pg_attribute.attnum
entsprechen :
SELECT attstattarget
FROM pg_attribute
WHERE attrelid = 'myschama.myidx'::regclass
AND attnum = 1;
Die Einstellung wirkt sich tatsächlich nur beim nächsten ANALYZE
auf die Spaltenstatistik aus wird manuell oder durch autovacuum
ausgeführt .