sql >> Database >  >> RDS >> PostgreSQL

Django Rest Framework-paginering extreem traag tellen

Het probleem is dat de query die wordt gebruikt om te tellen dezelfde potentieel complexe is als die waarmee de gegevens worden opgehaald. Dat is nogal verspillend. PageNumberPagination gebruikt Django's eigen Paginator intern.

Om de query voor de telling eenvoudiger te maken, overschrijft u de paginatorklasse die DRF gebruikt:

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. APEX_ZIP Voorbeeld

  2. Hoe een geneste tabel te maken met behulp van door de gebruiker gedefinieerd gegevenstype in Oracle Database

  3. Hoe MONTHNAME() werkt in MariaDB

  4. Laravel OrderOp aantal relaties