sql >> Databáze >  >> RDS >> PostgreSQL

Stránkování Django Rest Framework extrémně pomalé

Problém je v tom, že dotaz používaný k počítání je stejně potenciálně složitý jako dotaz používaný k načítání dat. To je spíše plýtvání. PageNumberPagination používá Djangoův vlastní Paginator interně.

Aby byl dotaz na počet jednodušší, přepíše třída stránkování 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. PLS-00428:V tomto příkazu SELECT se očekává klauzule INTO

  2. Structured Query Language – důležitost učení se SQL

  3. PostgreSQL schémata / jmenné prostory s Django

  4. Import oddílů InnoDB v MariaDB 10.0/10.1