我目前正在优化我的 Django 应用程序,该应用程序充当我使用 Django Rest Framework 的前端的 API。在 Debug模式下运行我的服务器时,我注意到每次执行查询集时,都会在它之前运行一个查询,它总是看起来像这样:
SELECT COUNT('*') AS "__count" FROM "table_name WHERE ..."
... 部分始终反射(reflect)返回我想要的对象的查询。我不确定这是否仅在调试中运行,QuerySet
对象天生就做的事情,或者我的代码有错误。希望了解为什么会发生这种情况以及我是否需要担心这件事
最佳答案
当您在 ListView 上使用分页时,这发生在 Django Rest Framework 中:
- 一个查询来获取当前页面的数据。
- 第二个查询计算同一查询集的记录总数。
关于Django SELECT COUNT(*) as "__count"对于每个查询,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/34344351/