sql >> Base de Datos >  >> RDS >> PostgreSQL

Comprobar objetivos de estadísticas en PostgreSQL

La configuración para el objetivo de estadísticas se almacena por columna en la tabla de catálogo pg_attribute . Puedes configurarlo así:

ALTER TABLE myschama.mytable ALTER mycolumn SET STATISTICS 127;

Y compruébalo así:

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

O simplemente mire el script de creación en el navegador de objetos de pgAdmin, donde se adjunta si el valor es distinto del valor predeterminado en default_statistics_target .

Cito el manual en attstattarget :

attstattarget controla el nivel de detalle de las estadísticas acumuladas para esta columna por ANALYZE . Un valor cero indica que no se deben recopilar estadísticas. Un valor negativo indica que se debe usar el objetivo de estadísticas predeterminado del sistema. El significado exacto de los valores positivos depende del tipo de datos. Para tipos de datos escalares, attstattarget es tanto el número objetivo de "valores más comunes" para recopilar como el número objetivo de contenedores de histograma para crear.

Negrita énfasis mío.

Las estadísticas para columnas de índice simple son idénticas a las estadísticas de columna y no tienen entradas separadas en las tablas de estadísticas. Pero Postgres recopila estadísticas separadas para expresiones de índice . Esos se pueden modificar de manera similar:

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

En ausencia de nombres de columna reales, los números ordinales se utilizan para abordar las columnas de índice, que corresponden a pg_attribute.attnum :

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

La configuración solo afecta las estadísticas de la columna la próxima vez que ANALYZE se está ejecutando manualmente o mediante autovacuum .