Оптимизация

РЕШЕНИЕ ПРОБЛЕМЫ С ЗАВИСАНИЕМ POSTGRESQL.
http://www.gilev.ru/решение-проблемы-с-зависанием-postgresql/

При выполнения некоторых регламентных операций (Закрытие месяца, Расчет себестоимости и т.п.), где используются сложные запросы с большим количеством соединений больших таблиц, возможно существенное увеличение времени выполнения операции. В основном, эти проблемы связаны с работой оптимизатора PostgreSQL и отсутствием актуальной статистики по таблицам, участвующим в запросе.

Варианты решения проблемы:

postgresql.conf
default_statistics_target = 1000 -10000.
postgresql.conf
enable_nestloop = off.
Отрицательным эффектом этого способа является возможное замедление некоторых запросов, поскольку при их выполении будут использоваться другие, более затратные, методы соединения (HASH JOIN).

*отключение оптимизатору возможности изменения порядка соединений таблиц в запросе:
postgresql.conf
join_collapse_limit=1.
Следует использовать этот метод, если вы уверены в правильности порядка соединений таблиц в проблемном запросе.
postgresql.conf
seq_page_cost = 0.1
random_page_cost = 0.4
cpu_operator_cost = 0.00025