У меня есть запрос в моем приложении, который выполняется очень быстро, когда в моих таблицах большое количество строк. Но когда число строк является умеренным (ни большим, ни малым), тот же запрос работает в 15 раз медленнее.
План объяснения показывает, что запрос в наборе данных среднего размера использует вложенные циклы для его алгоритма соединения. В большом наборе данных используются хешированные соединения.
Я могу отказать планировщику запросов от использования вложенных циклов либо на уровне базы данных (postgresql.conf), либо за сеанс (SET enable_nestloop TO off
).
Каковы потенциальные ловушки SET enable_nestloop TO off
?
Дополнительная информация: PostgreSQL 8.2.6, работающая под Windows.