gpt4 book ai didi

python - Django Rest Framework 分页计数极慢

转载 作者:太空狗 更新时间:2023-10-29 20:20:00 26 4
gpt4 key购买 nike

我在 Django Rest 框架中打开了分页,它看起来非常慢。 Count 看起来像是罪魁祸首,由于表中有数百万行,每次返回都需要数百毫秒。

我正在使用 postgresql 作为数据库。有没有办法不计算行数并仍然使用分页?如果我手动过滤查询集,则在启用此功能之前性能很好。

最佳答案

问题是,用于计数的查询与用于获取数据的查询可能很复杂。这样比较浪费。 PageNumberPagination 在内部使用 Django 自己的 Paginator

为了使计数查询更简单,请重写 DRF 使用的分页器类:

from django.core.paginator import Paginator
from django.utils.functional import cached_property
from rest_framework.pagination import PageNumberPagination

class FasterDjangoPaginator(Paginator):
@cached_property
def count(self):
# only select 'id' for counting, much cheaper
return self.object_list.values('id').count()


class FasterPageNumberPagination(PageNumberPagination):
django_paginator_class = FasterDjangoPaginator

关于python - Django Rest Framework 分页计数极慢,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31740039/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com