Om frågeplaneraren väljer suboptimala frågeplaner är chansen stor att den har ofullständig eller vilseledande information att arbeta med.
Se denna PostgreSQL Wiki-sida
på serverjustering. Var särskilt uppmärksam på kapitlen om random_page_cost och default_statistics_target .
Läs även motsvarande kapitel i manualen om Statistik Används av planeraren
och Planerkostnadskonstanter .
Mer specifikt kan det hjälpa att öka statistics target
för följande kolumner:
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;
Dessa är involverade i filtren som resulterar i
Det finns fler . Kontrollera varje kolumn där hyveln avviker mycket från uppskattningen. Standard är bara 100. Det är bara meningsfullt för tabeller med>> 1000 rader. Experimentera med inställningen. Kör ANALYZE
på tabellerna efteråt för att ändringarna ska träda i kraft.
Det kan också hjälpa att skapa ett partiellt index på postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(beroende på hur vanliga NULL-värden är).
En annan sak som kan hjälpa dig är att uppgradera till den senaste versionen 9.1. Det har skett ett antal betydande förbättringar på detta område.