PostgreSQL
 sql >> Teknologi Basis Data >  >> RDS >> PostgreSQL

Pagination Django Rest Framework hitungannya sangat lambat

Masalahnya adalah, kueri yang digunakan untuk menghitung sama dengan yang berpotensi kompleks seperti yang digunakan untuk mengambil data. Itu agak boros. PageNumberPagination menggunakan Paginator milik Django sendiri secara internal.

Untuk membuat kueri penghitungan lebih sederhana, ganti kelas paginator yang digunakan 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. Dapatkah INSERT [...] ON CONFLICT digunakan untuk pelanggaran kunci asing?

  2. Bagaimana cara memperbaiki kesalahan ketidakcocokan versi pg_dump?

  3. Bagaimana cara menggunakan skema di Django?

  4. Kesalahan NodeJS Postgres getaddrinfo ENOTFOUND

  5. simpan hasil postgresql dalam variabel bash