PostgreSQL
 sql >> Base de Dados >  >> RDS >> PostgreSQL

Verificar alvos de estatísticas no PostgreSQL


A configuração para o destino de estatísticas é armazenada por coluna na tabela de catálogo pg_attribute . Você pode definir assim:
ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

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

Ou você apenas olha para o script de criação no navegador de objetos do pgAdmin, onde é anexado se o valor for diferente do padrão em default_statistics_target .

Cito o manual em attstattarget :

attstattarget controla o nível de detalhe das estatísticas acumuladas para esta coluna por ANALYZE . Um valor zero indica que nenhuma estatística deve ser coletada. Um valor negativo indica o uso da meta de estatísticas padrão do sistema. O significado exato dos valores positivos depende do tipo de dados. Para tipos de dados escalares, attstattarget é o número de destino de "valores mais comuns" a serem coletados e o número de destino de compartimentos de histograma a serem criados.

Negrito ênfase minha.

As estatísticas para colunas de índice simples são idênticas às estatísticas de coluna e não possuem entradas separadas nas tabelas de estatísticas. Mas o Postgres reúne estatísticas separadas para expressões de índice . Eles podem ser ajustados de maneira semelhante:
ALTER INDEX myschema.myidx ALTER COLUMN 1 SET STATISTICS 128;

Na ausência de nomes de coluna reais, números ordinais são usados ​​para endereçar colunas de índice, que correspondem a pg_attribute.attnum :
SELECT attstattarget
FROM   pg_attribute
WHERE  attrelid = 'myschama.myidx'::regclass
AND    attnum = 1;

A configuração só afetará as estatísticas da coluna na próxima vez que ANALYZE está sendo executado manualmente ou por autovacuum .