改进django rest框架中的分页和序列化时间



我使用ListAPIView来呈现对象列表。响应返回带有limit=50的分页结果。查询集的大小从0到几十万不等。

我注意到的是,当查询集大小较小时,API响应时间较小。但是随着查询集大小的增加,API响应时间会变得非常长。

分页实际上是罪魁祸首吗?
是否有一种方法可以使用分页优化ListAPIView s的响应时间?

正如django官方文档中所述,查询集是惰性的。

QuerySet是懒惰的-创建QuerySet的行为不涉及任何数据库活动。你可以一整天都把过滤器堆在一起,直到QuerySet被求值,Django才会真正运行查询。

另外,分页还可以弥补queryset的惰性。

因此,延迟的罪魁祸首不是分页。
情况下关闭…


那它是什么呢?

  • 在分页之前处理查询集。多次点击数据库,使应用程序变慢。
  • Ordering = @sha256建议。
  • 可能是非常昂贵的查询(您可以通过遵循文档检查)。

怎么做才能更快?

    数据访问优化
  • 解决Django ORM中的性能问题

最新更新