性能对复合sqlalchemy查询的顺序有影响吗?

时间:2019-10-07 20:12:21

标签: python postgresql flask sqlalchemy flask-sqlalchemy

我正在使用flask-sqlalchemy进行以下查询。两种方法都可以正常工作,但是我想知道,随着表的增加,以一种或另一种方式订购它是否会对性能产生影响:

选项1:

things = Thing.query.filter(Thing.id != 5).order_by(Thing.id.desc()).limit(20).all()

选项2(互换了order_by和filter):

things = Thing.query.order_by(Thing.id.desc()).filter(Thing.id != 5).limit(20).all()

谢谢!

1 个答案:

答案 0 :(得分:2)

尽管SQL语法对构成语句的子句的顺序非常严格,但是SQLAlchemy中的ORM查询生成器是生成性的。它允许以更轻松的方式添加条件和选项,并且在执行之前对其进行编译以生成最终的SQL。因此,您的两个查询将导致相同的SQL,因此没有性能差异。