PostgreSQL
 sql >> Baza danych >  >> RDS >> PostgreSQL

Paginacja Django Rest Framework bardzo wolno liczy

Problem w tym, że zapytanie używane do zliczania jest tym samym potencjalnie złożonym zapytaniem, które zostało użyte do pobrania danych. To raczej marnotrawstwo. PageNumberPagination używa własnego Paginator Django wewnętrznie.

Aby uprościć zapytanie o liczbę, nadpisz klasę paginatora, której używa 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. Database
  2.   
  3. Mysql
  4.   
  5. Oracle
  6.   
  7. Sqlserver
  8.   
  9. PostgreSQL
  10.   
  11. Access
  12.   
  13. SQLite
  14.   
  15. MariaDB
  1. Aktualizacja zbiorcza/wsadowa/upsert w PostgreSQL

  2. Nie znaleziono odpowiedniego sterownika po dołączeniu potrzebnych sterowników do wtyczki maven-assembly-plugin

  3. Proaktywne monitorowanie PostgreSQL (program Developer Studio/Advisors)

  4. Jak zainstalować postgres z NSIS ze wszystkimi parametrami?

  5. Zapytanie SQL, aby uzyskać wszystkie wartości, jakie może mieć wyliczenie