Hvis forespørgselsplanlæggeren vælger suboptimale forespørgselsplaner, er der stor sandsynlighed for, at den har ufuldstændige eller vildledende oplysninger at arbejde med.
Se denne PostgreSQL Wiki-side
på server tuning. Vær især opmærksom på kapitlerne om tilfældige_side_omkostninger og default_statistics_target .
Læs også de tilsvarende kapitler i manualen om Statistik Brugt af planlæggeren
og Planner-omkostningskonstanter .
Mere specifikt kan det hjælpe at øge statistics target
for følgende kolonner:
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;
Disse er involveret i filtrene, hvilket resulterer i
Der er flere . Tjek hver kolonne, hvor høvlen afviger meget fra estimatet. Standard er kun 100. Giver kun mening for tabeller med>> 1000 rækker. Eksperimenter med indstillingen. Kør ANALYZE
på tabellerne bagefter for at ændringerne træder i kraft.
Det kan også hjælpe at oprette et delvist indeks på postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(afhængigt af hvor almindelige NULL-værdier er).
En anden ting, der kan hjælpe dig, er at opgradere til den seneste version 9.1. Der er sket en række væsentlige forbedringer på dette område.