Se o planejador de consulta escolher planos de consulta abaixo do ideal, é provável que ele tenha informações incompletas ou enganosas para trabalhar.
Veja esta página Wiki do PostgreSQL no ajuste do servidor. Preste atenção especialmente aos capítulos sobre random_page_cost e default_statistics_target .
Leia também os capítulos correspondentes no manual sobre Estatísticas Usado pelo planejador e Constantes de custo do planejador .
Mais especificamente, pode ajudar a aumentar a
statistics target
para as seguintes colunas: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;
Estes estão envolvidos nos filtros resultando na
Há mais . Verifique todas as colunas onde a plaina se desvia muito da estimativa. O padrão é apenas 100. Só faz sentido para tabelas com>> 1000 linhas. Experimente com a configuração. Execute
ANALYZE
nas tabelas posteriormente para que as alterações entrem em vigor. Também pode ajudar a criar um índice parcial em
postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(dependendo de quão comuns são os valores NULL). Outra coisa que pode ajudá-lo é atualizar para a versão mais recente 9.1. Houve uma série de melhorias substanciais nesta área.