我在我的 Django 模型中设置null=True
了一个ForeignKey
字段,现在当我查询该模型时,它慢了大约 10 倍。(我正在使用select_related()
)
在更改前后查看我的 Postgres 日志可以找到原因的线索:
- 在设置之前
null=True
,生成的 SQL 是带有几个内部连接的单个 select 语句。 - 设置后
null=True
,生成的 SQL 会忽略其中一个连接,而后跟数千个相同的 select 语句。
所以这是经典的n+1查询问题,在解决此问题之前,如何null=True
在ForeignKey
不影响性能的情况下设置字段?