2013-02-22 13 views
12

Ho cercato ma non sono stato in grado di trovare una risposta semplice e diretta a questo. Come posso controllare i bersagli statistici correnti usati da ANALYZE?Controllare gli obiettivi delle statistiche in PostgreSQL

+0

Non certo perché il tag di PostgreSQL è stato aggiunto ... ho pensato che fosse implicato dal tag postgresql-9.2. – jpmc26

+1

È prassi comune farlo, quindi tutto PostgreSQL è elencato sotto il tag [PostgreSQL]. –

+1

Per motivi di ricerca, in altre parole: come ottenere statistiche o come mostrare i target delle statistiche. –

risposta

17

L'impostazione per la destinazione delle statistiche viene memorizzata per colonna nella tabella di catalogo pg_attribute. È possibile impostare in questo modo:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127; 

E controllare in questo modo:

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

O basta guardare lo script di creazione nel browser oggetto di pgAdmin, dove viene aggiunto se il valore è distinto dal valore predefinito in default_statistics_target.

cito il manuale attstattarget:

attstattarget controlla il livello di dettaglio delle statistiche accumulate per questa colonna da ANALYZE. Un valore zero indica che non devono essere raccolte statistiche . Un valore negativo indica di utilizzare il target di statistiche predefinito di sistema. Il significato esatto dei valori positivi è dati dipendenti dal tipo. Per i tipi di dati scalari, attstattarget è sia il numero di destinazione di "valori più comuni" da raccogliere, sia il numero di punti di istogramma di destinazione da creare.

Bold enfasi miniera.

+0

Sì. Avrei dovuto conoscere la documentazione a cui ti sei collegato. Scusate; Ho cancellato il mio commento perché l'ho trovato lì quasi subito dopo averlo chiesto. Più al punto di questa domanda, alcune delle mie ricerche suggerivano che ci potrebbero essere statistiche diverse per gli indici. Qualche cosa non immediatamente ovvia là dovrei guardare fuori per? E grazie mille. – jpmc26

+0

@ jpmc26: Non ho mai usato un obiettivo di statistiche esplicito per una colonna indice, quindi non ho esperienza con questo. Finora l'ho usato solo per ottimizzare le statistiche per le colonne della tabella. –

1

Questo fornisce una visione più pulita di statistiche correnti che sono raccolti

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