2013-02-22 4 views
12

Ich habe gesucht, konnte aber keine einfache, unkomplizierte Antwort darauf finden. Wie überprüfe ich die von ANALYZE verwendeten aktuellen Statistikziele?Statistikziele in PostgreSQL überprüfen

+0

nicht sicher, warum der postgresql Tag hinzugefügt wurde ... Ich dachte, es durch den postgresql-9.2-Tag angedeutet wurde. – jpmc26

+1

Das ist üblich, also wird PostgreSQL unter dem Tag [PostgreSQL] aufgelistet. –

+1

Um der Suche willen, mit anderen Worten: wie man Statistiken bekommt oder wie man Statistikziele zeigt. –

Antwort

17

Die Einstellung für das Statistikziel wird pro Spalte in der Katalogtabelle pg_attribute gespeichert. Sie können es wie folgt festgelegt:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127; 

Und es wie folgt überprüfen:

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

Oder Sie schauen nur auf die Schaffung Skript im Objektbrowser von pgAdmin, wo es angehängt wird, wenn der Wert unterscheidet sich von der Standardeinstellung in default_statistics_target.

zitiere ich das Handbuch auf attstattarget:

attstattarget den Detaillierungsgrad der Statistik steuert von ANALYZE für diese Spalte angesammelt. Ein Nullwert zeigt an, dass keine Statistik gesammelt werden sollte. Ein negativer Wert besagt, dass das Systemstandardziel Statistikziel verwendet wird. Die genaue Bedeutung von positiven Werten ist Daten typabhängig. Für skalare Datentypen ist attstattarget sowohl die Zielanzahl der "häufigsten Werte", die gesammelt werden sollen, als auch das Ziel Anzahl der zu erstellenden Histogramm-Bins.

Fett Hervorhebung meins.

+0

Ja. Ich hätte wissen müssen, in welche Dokumentation ich verlinkt habe. Es tut uns leid; Ich habe meinen Kommentar gelöscht, weil ich ihn fast sofort nach der Frage gefunden habe. Mehr zum Punkt dieser Frage, einige meiner Suche vorgeschlagen, dass es einige verschiedene Statistiken für Indizes geben könnte. Alles was nicht sofort offensichtlich ist, sollte ich beachten? Und vielen Dank. – jpmc26

+0

@ jpmc26: Ich habe noch nie ein explizites Statistikziel für eine Indexspalte verwendet, daher habe ich keine Erfahrung damit. Bisher habe ich es nur verwendet, um Statistiken für Tabellenspalten zu tunen. –

1

Dies bietet einen sauberere Überblick über aktuelle Statistiken gesammelt werden

SELECT attrelid::regclass, attname, attstattarget FROM pg_attribute WHERE attstattarget >= 0 order by attstattarget desc;