【问题标题】:PostgreSQL filter performance and query optimizationPostgreSQL 过滤器性能和查询优化
【发布时间】:2019-02-07 11:25:05
【问题描述】:

我有一些繁重的查询,其中性能要求在连接之前应用过滤器。根据some SO posts

查询优化器通常足够聪明,可以及早过滤。

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))

我是否应该期望执行这种类型的查询,以便在连接之前应用过滤器?

【问题讨论】:

  • 你试过调试actual query吗?
  • 这更多的是关于“Postgresql 性能”而不是“SQLAlchemy 过滤器性能”,除非您询问如何在 SQLA 查询上运行 EXPLAIN
  • 我们唯一可以分析的是由 SQLAlchemy 生成的实际 SQL,它被传递给 Pg 执行。

标签: sql postgresql sqlalchemy database-performance


【解决方案1】:

是的,PostgreSQL 将首先应用过滤器只要它期望更快,这可能总是如此。

为了确定,获取实际的 SQL 语句并检查执行计划

EXPLAIN SELECT ...;

【讨论】:

    猜你喜欢
    • 2021-12-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2014-12-10
    相关资源
    最近更新 更多