【问题标题】:Large number of queries in Django viewsDjango 视图中的大量查询
【发布时间】:2016-10-27 05:53:09
【问题描述】:

我创建了一个 Django 应用程序,一切似乎都运行良好。然后我开始查看 Django 调试工具栏,发现我的一些页面生成了 100 多个查询,其中有很多重复项。但是,页面仍然很流畅,并且执行时间仍然很短,因为我可以想象缓存。

我的问题是,这些大量的查询是一个大问题吗?我是否应该优先考虑减少查询的数量,或者如果我知道 Django ORM 将缓存结果,两次调用相同的查询是否可以。

例如,如果我在模板中多次执行相同的查询,我应该将其作为上下文变量传递还是使用 with 标签将其设置为等于模板中的变量,而不是多次调用它,即使 Django 缓存了结果?

【问题讨论】:

  • 太宽泛了,但我感觉您误解了 ORM 缓存的工作原理。为什么不发布一些代码?
  • 您应该查看查询需要多长时间而不是查询的数量
  • 是的,代码和查询执行被缓存,因此看起来更快。虽然,您需要共享一些代码,因为每个请求 100 个查询似乎有点太高了。
  • 基本上我要问的是是否有 500 个查询是否重要,但它在 100 毫秒内执行?我会更新一个例子
  • 还是太宽泛了,你是通过查询次数还是其他方式来为你的数据库付费?与谁有关?为了什么? 100 个查询不一定太高,具体取决于页面在做什么

标签: django django-models


【解决方案1】:

查询的数量无关紧要,您需要关注的是他们获取的数据和他们花费的时间。

如果有任何事情花费最少的时间查看完成时间最长的查询,因为这些查询将返回最多的数据,并查看您是否真的需要所有这些数据。如果这样做,是否有其他方法可以访问它。如果不这样做,您可以减少返回的数据。

与往常一样,如果性能不是问题,则无需担心,专注于其他可能成为瓶颈的事情。

【讨论】:

    猜你喜欢
    • 2016-10-05
    • 2010-11-20
    • 2018-07-21
    • 2021-10-21
    • 1970-01-01
    • 2011-08-21
    • 1970-01-01
    • 2020-07-06
    • 2018-07-14
    相关资源
    最近更新 更多