sql >> Databasteknik >  >> RDS >> PostgreSQL

Django Rest Framework paginering extremt långsam räkning

Problemet är att frågan som används för att räkna är samma potentiellt komplexa som används för att hämta data. Det är ganska slösaktigt. PageNumberPagination använder Djangos egen Paginator internt.

För att göra frågan om räkningen enklare åsidosä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. bädda in bild i html-e-post

  2. Gör en sha1-hash av en rad i Oracle

  3. SQL-serverlogg, leverans och katastrofåterställning, installation och konfiguration -4

  4. Är det möjligt att framtvinga datakontroll i MySQL med hjälp av reguljära uttryck