+-

我在Django Rest框架中进行了分页,看起来速度非常慢. Count看起来像罪魁祸首,由于表中数百万行,每次返回都要花费数百毫秒.
我使用postgresql作为数据库.有没有办法不计算行数仍然使用分页?如果我手动过滤了查询集,则在启用此功能之前性能很好.
最佳答案
覆盖分页类的get_paginated_response方法,不包括计数.您可以参考PageNumberPagination类的 base implementation来查看您应该返回的内容.
from rest_framework.pagination import PageNumberPagination
from collections import OrderedDict # requires Python 2.7 or later
class PageNumberPaginationWithoutCount(PageNumberPagination):
# Set any other options you want here like page_size
def get_paginated_response(self, data):
return Response(OrderedDict([
('next', self.get_next_link()),
('previous', self.get_previous_link()),
('results', data)
]))
然后在settings.py中,将DEFAULT_PAGINATION_CLASS设置为新的分页类.
DEFAULT_PAGINATION_CLASS = 'path.to.PageNumberPaginationWithoutCount'
这种方法在example in the pagination docs中使用.
编辑:从下面的评论中听起来这可能不足以阻止慢速SQL查询,因此您可能还需要覆盖paginate_queryset.
点击查看更多相关文章
转载注明原文:python – Django Rest Framework分页极其缓慢计数 - 乐贴网