python – 优化Django:嵌套查询与关系查找

前端之家收集整理的这篇文章主要介绍了python – 优化Django:嵌套查询与关系查找前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。

我有一个使用嵌套ORM查询的遗留代码,它使用JOIN生成sql SELECT查询,以及包含SELECT和JOIN的条件.执行此查询需要花费大量时间.顺便说一句,当我在原始sql中执行此查询时,取自Django_ORM_query.query,它在合理的时间内执行.

在这种情况下,优化的最佳做法是什么?
如果我将使用ManyToMany和ForeignKey关系,查询会执行得更快吗?

最佳答案
Django中的性能问题通常是由循环中的以下关系引起的,这会导致多个数据库查询.如果安装了django-debug-toolbar,则可以检查您正在执行的查询数量,并确定需要优化的查询.调试工具栏还会显示每个查询的时间,这对于优化django至关重要,如果您没有安装或未使用它,则会错过很多.

您通常使用select_related()prefetch_related()解决以下关系的问题.

一个页面通常最多应该有20-30个查询,这将严重影响性能.大多数页面应该只有5-10个查询.您希望减少查询数量,因为往返是数据库性能的头号杀手.通常,一个大查询比100个小查询快.

数据库性能的第二大杀手是一个非常罕见的问题,尽管它有时会因为减少查询数量的技术而出现.您的查询可能只是太大,如果是这种情况,您应该使用defer()或only(),这样您就不会加载您知道不会使用的大字段.

原文链接:https://www.f2er.com/python/439542.html

猜你在找的Python相关文章