Si el planificador de consultas elige planes de consulta subóptimos, es probable que tenga información incompleta o engañosa para trabajar.
Consulte esta página wiki de PostgreSQL
en el ajuste del servidor. Preste especial atención a los capítulos sobre random_page_cost y objetivo_estadístico_predeterminado .
Lea también los capítulos correspondientes del manual sobre Estadísticas Utilizado por el Planificador
y Constantes de costos del planificador .
Más específicamente, podría ayudar a aumentar el statistics target
para las siguientes columnas:
ALTER TABLE postgres.products ALTER COLUMN id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE postgres.sales_orders ALTER COLUMN company_id SET STATISTICS 1000;
ALTER TABLE goods_return_notes ALTER COLUMN retailer_id SET STATISTICS 1000;
ALTER TABLE goods_return_notes ALTER COLUMN company_id SET STATISTICS 1000;
ALTER TABLE retailer_category_leaf_nodes ALTER COLUMN tree_left SET STATISTICS 1000;
ALTER TABLE channels ALTER COLUMN principal_id SET STATISTICS 1000;
Estos están involucrados en los filtros que dan como resultado el
Hay más . Verifique cada columna donde el cepillo se desvía mucho de la estimación. El valor predeterminado es solo 100. Solo tiene sentido para tablas con>> 1000 filas. Experimente con la configuración. Ejecute ANALYZE
en las tablas después para que los cambios surtan efecto.
También podría ayudar crear un índice parcial en postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(dependiendo de cuán comunes sean los valores NULL).
Otra cosa que puede ayudarte es actualizar a la última versión 9.1. Ha habido una serie de mejoras sustanciales en esta área.