Pokud plánovač dotazů zvolí neoptimální plány dotazů, je pravděpodobné, že bude pracovat s neúplnými nebo zavádějícími informacemi.
Podívejte se na tuto stránku PostgreSQL Wiki
na ladění serveru. Věnujte pozornost zejména kapitolám o random_page_cost a default_statistics_target .
Přečtěte si také odpovídající kapitoly v příručce o statistikách Používá Plánovač
a Konstanty nákladů plánovače .
Přesněji řečeno, může pomoci zvýšit statistics target
pro následující sloupce:
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;
Ty jsou zapojeny do filtrů, jejichž výsledkem je
Je jich další . Zkontrolujte každý sloup, kde se hoblík hodně odchyluje od odhadu. Výchozí hodnota je pouze 100. Má smysl pouze pro tabulky s>> 1000 řádky. Experimentujte s nastavením. Spusťte ANALYZE
na tabulky poté, aby se změny projevily.
Může také pomoci vytvořit částečný index na postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(v závislosti na tom, jak běžné jsou hodnoty NULL).
Další věc, která vám může pomoci, je upgrade na nejnovější verzi 9.1. V této oblasti došlo k řadě podstatných zlepšení.