我使用ListAPIView
来呈现对象列表。响应返回带有limit=50
的分页结果。查询集的大小从0到几十万不等。
我注意到的是,当查询集大小较小时,API响应时间较小。但是随着查询集大小的增加,API响应时间会变得非常长。
分页实际上是罪魁祸首吗?
是否有一种方法可以使用分页优化ListAPIView
s的响应时间?
正如django官方文档中所述,查询集是惰性的。
QuerySet是懒惰的-创建QuerySet的行为不涉及任何数据库活动。你可以一整天都把过滤器堆在一起,直到QuerySet被求值,Django才会真正运行查询。
另外,分页还可以弥补queryset的惰性。
因此,延迟的罪魁祸首不是分页。
情况下关闭…
那它是什么呢?
- 在分页之前处理查询集。多次点击数据库,使应用程序变慢。
-
Ordering
= @sha256建议。 - 可能是非常昂贵的查询(您可以通过遵循文档检查)。
怎么做才能更快?
- 数据访问优化
- 解决Django ORM中的性能问题