sql >> Database teknologi >  >> RDS >> PostgreSQL

Django Rest Framework-paginering tæller ekstremt langsomt

Problemet er, at den forespørgsel, der bruges til at tælle, er den samme potentielt komplekse, som bruges til at hente dataene. Det er ret spild. PageNumberPagination bruger Djangos egen Paginator internt.

For at gøre forespørgslen til optællingen enklere tilsidesætter pagineringsklassen 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


  1. Sådan giver du alle privilegier på visninger til vilkårlige brugere

  2. Migrering fra MySQL Enterprise til MariaDB 10.3

  3. Sådan ændres værdier for Rediger Top X og vælg Top X Rows i SQL Server Management Studio(SSMS) - SQL Server / TSQL Tutorial Del 20

  4. Forsinket holdbarhed i SQL Server 2014