Jeśli planista zapytań wybierze nieoptymalne plany zapytań, prawdopodobnie ma niekompletne lub wprowadzające w błąd informacje.
Zobacz tę stronę Wiki PostgreSQL
na strojenie serwera. Zwróć szczególną uwagę na rozdziały dotyczące random_page_cost i default_statistics_target .
Przeczytaj również odpowiednie rozdziały w podręczniku Statystyki Używane przez planistę
i Stałe kosztów planowania .
Dokładniej, może to pomóc w zwiększeniu statistics target
dla następujących kolumn:
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;
Są one zaangażowane w filtry, których wynikiem jest
Jest więcej . Sprawdź każdą kolumnę, w której strugarka znacznie odbiega od oszacowania. Wartość domyślna to tylko 100. Ma sens tylko w przypadku tabel z>> 1000 wierszy. Poeksperymentuj z ustawieniem. Uruchom ANALYZE
na stołach później, aby zmiany zaczęły obowiązywać.
Pomocne może być również utworzenie częściowego indeksu w postgres(sales_orders.retailer_id) WHERE retailer_id IS NOT NULL
(w zależności od tego, jak powszechne są wartości NULL).
Inną rzeczą, która może ci pomóc, jest uaktualnienie do najnowszej wersji 9.1. W tym obszarze wprowadzono szereg istotnych ulepszeń.