【问题标题】:Django SELECT COUNT(*) as "__count" for every query对于每个查询,Django SELECT COUNT(*) as "__count"
【发布时间】:2016-03-24 11:56:38
【问题描述】:

我目前正在优化我的 Django 应用程序,该应用程序充当我使用 Django Rest 框架的前端的 API。在调试模式下运行我的服务器时,我注意到每次执行查询集时,都会在它之前运行一个查询,它总是如下所示:

SELECT COUNT('*') AS "__count" FROM "table_name WHERE ..."

... 部分始终反映返回我想要的对象的查询。我不确定这是否仅在调试中运行,QuerySet 对象天生就会这样做,或者我的代码有错误。希望了解一下为什么会发生这种情况以及我是否需要担心

【问题讨论】:

  • 您是否安装了一些调试工具,例如django-debug-toolbar
  • 是的,但它没有显示任何这些count(*) 查询。只是我终端中的调试输出
  • 对不起,我完全错了,它们显示在工具栏中
  • 引发查询的API请求是什么,响应的内容。分页需要count(*)吗?

标签: django postgresql django-rest-framework


【解决方案1】:

当您在列表视图上使用分页时,Django Rest Framework 会发生这种情况:

  • 用于获取当前页面数据的查询。
  • 用于计算同一查询集的总记录数的第二个查询。

【讨论】:

  • 你说得对,如果我删除分页,它就会消失。感谢您帮助我解决这个问题!
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2018-04-13
  • 1970-01-01
  • 1970-01-01
  • 2015-01-26
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多