Производительность фильтра PostgreSQL и оптимизация запросов - PullRequest
0 голосов
/ 07 февраля 2019

У меня есть несколько сложных запросов, где производительность требует применения фильтров перед объединением.Согласно некоторым сообщениям SO

Оптимизатор запросов часто достаточно умен, чтобы фильтровать рано.

session.query(Table1.post_id)\
    .join(Table2, Table1.post_id == Table2.post_id)\
    .filter(and_(Table1.user_id == thing1.id, Table2.blob_id == thing2.id))

Стоит ли ожидать такой тип запросабыть выполненным так, чтобы фильтры были применены перед объединением?

1 Ответ

0 голосов
/ 07 февраля 2019

Да, PostgreSQL будет применять фильтры в первую очередь всякий раз, когда он ожидает, что это будет быстрее , что, вероятно, всегда будет иметь место.

Чтобы быть уверенным, получите фактический оператор SQL и изучитеплан выполнения с

EXPLAIN SELECT ...;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...