Als de queryplanner suboptimale queryplannen kiest, is de kans groot dat hij onvolledige of misleidende informatie heeft om mee te werken.
Zie deze PostgreSQL Wiki-pagina
op servertuning. Let vooral op de hoofdstukken over random_page_cost en default_statistics_target .
Lees ook de bijbehorende hoofdstukken in de handleiding op Statistieken Gebruikt door de Planner
en Plannerkostenconstanten .
Meer specifiek kan het helpen om het statistics target
te verhogen voor de volgende kolommen:
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;
Deze zijn betrokken bij de filters, wat resulteert in de
Er zijn meer . Controleer elke kolom waar de schaafmachine veel afwijkt van de schatting. De standaardwaarde is slechts 100. Heeft alleen zin voor tabellen met>> 1000 rijen. Experimenteer met de instelling. Voer ANALYZE
uit daarna op de tafels om de wijzigingen door te voeren.
Het kan ook helpen om een gedeeltelijke index te maken op postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(afhankelijk van hoe vaak NULL-waarden zijn).
Een ander ding dat u kan helpen, is om upgraden naar de laatste versie 9.1. Er zijn een aantal substantiële verbeteringen op dit gebied.