gpt4 book ai didi

sql - 当 ForeignKey null=True 时 Django 慢查询

转载 作者:行者123 更新时间:2023-11-29 11:30:06 27 4
gpt4 key购买 nike

我在我的 Django 模型中的一个 ForeignKey 字段上设置了 null=True,现在当我查询该模型时,速度大约慢了 10 倍。 (我正在使用 select_related())

查看更改前后的 Postgres 日志可以找到原因的线索:

  • 设置 null=True 之前,生成的 SQL 是带有几个内部联接的单个 select 语句。
  • 设置 null=True 后,生成的 SQL 省略了其中一个连接,而是跟在数千个相同的选择语句之后。

所以这是经典的n+1 查询问题,until this is fixed ,如何在不影响性能的情况下在 ForeignKey 字段上设置 null=True

最佳答案

您可以通过 raw query 解决这个问题.查看在放置 null=True 之前生成的查询,并通过 raw 查询而不是使用“顶级 django ORM”来执行它。故障是由于 ORM 不是 Postgres 服务器,因此您可以避免直接运行 SQL 代码生成无用的代码。

关于sql - 当 ForeignKey null=True 时 Django 慢查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/14366612/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com