Flask应用如何实现SQL的预加载优化?
- 内容介绍
- 文章标签
- 相关推荐
本文共计522个文字,预计阅读时间需要3分钟。
在Django中,我们可通过使用`select_related`和`prefetch_related`方法进行SQL优化(以最少的SQL查询获取所需数据)。例如:`select_related`将基于外键关系关联数据,在执行查询语句时通过创建包含`INNER JOIN`的SQL语句来实现。
在django中,我们可以使用 select_related和prefetch_related方法来做sql优化(以最少的sql查出所有需要的数据)如:select_related将会根据外键关系,在执行查询语句的时候通过创建一条包含SQL inner join操作的SELECT语句来一次性获得主对象及相关对象的信息,在Flask中,通过阅读文档,发现在SQLAlchemy的官网中有说到三种方法来做,类似django中的select_related和prefetch_related 如下是从SQLAlchemy官网中摘抄的部分,详情可从其官网中获取>docs.sqlalchemy.org/en/14/orm/loading_relationships.html
急切加载:注意此方法应该适当使用,不同于django中的方法,会额外拆分出一条IN查询
回想一下,我们之前演示了延迟加载操作,当我们访问 a 的User.addresses集合User并发出 SQL 时。如果你想减少查询的数量(在很多情况下是显着的),我们可以对查询操作应用一个急切的负载。
本文共计522个文字,预计阅读时间需要3分钟。
在Django中,我们可通过使用`select_related`和`prefetch_related`方法进行SQL优化(以最少的SQL查询获取所需数据)。例如:`select_related`将基于外键关系关联数据,在执行查询语句时通过创建包含`INNER JOIN`的SQL语句来实现。
在django中,我们可以使用 select_related和prefetch_related方法来做sql优化(以最少的sql查出所有需要的数据)如:select_related将会根据外键关系,在执行查询语句的时候通过创建一条包含SQL inner join操作的SELECT语句来一次性获得主对象及相关对象的信息,在Flask中,通过阅读文档,发现在SQLAlchemy的官网中有说到三种方法来做,类似django中的select_related和prefetch_related 如下是从SQLAlchemy官网中摘抄的部分,详情可从其官网中获取>docs.sqlalchemy.org/en/14/orm/loading_relationships.html
急切加载:注意此方法应该适当使用,不同于django中的方法,会额外拆分出一条IN查询
回想一下,我们之前演示了延迟加载操作,当我们访问 a 的User.addresses集合User并发出 SQL 时。如果你想减少查询的数量(在很多情况下是显着的),我们可以对查询操作应用一个急切的负载。

