【发布时间】:2016-11-01 00:41:18
【问题描述】:
我正在使用带有 Flask 和 sqlalchemy 的 postgresql。 我发现如果我在 python 中做类似的事情,
t1 = datetime.datetime.now()
session.query(Table_Class).all()
t2 = datetime.datetime.now()
print (t2 - t1)
我正在获取 sqlalchemy 查询的执行时间。 但是,如果我去 postgresql 并使用 EXPLAIN ANALYZE 编写相同的 sql 语句,那么我也可以获得 sql 查询的执行时间。喜欢,
EXPLAIN ANALYSE select * from table;
我发现这些执行时间之间的差异很大。 sqlalchemy 的执行时间几乎是 EXPLAIN 查询的执行时间的 10 倍。对于小型查询,两次是(75 毫秒和 2 毫秒),对于具有许多连接的长查询,时间是(1.5 秒和 200 毫秒)。我不知道为什么会这样。为什么这些时间相差很大?
【问题讨论】:
-
您确定 SQLAlchemy 生成与您在 postgres 控制台中键入的查询相同的查询吗?例如,如果您有急切加载,
session.query(TableClass)也将执行连接并生成select * from a join b join c... -
是的,SQLAlchemy 生成的和我在 postgres 控制台中输入的一样。我通过设置
SQLALCHEMY_ECHO=True确认了它
标签: python postgresql flask sqlalchemy explain