PostgreSQL
 sql >> Cơ Sở Dữ Liệu >  >> RDS >> PostgreSQL

Số lượng phân trang Django Rest Framework cực kỳ chậm

Vấn đề là, truy vấn được sử dụng để đếm là truy vấn có khả năng phức tạp giống như được sử dụng để tìm nạp dữ liệu. Điều đó khá lãng phí. PageNumberPagination sử dụng Paginator của riêng Django trong nội bộ.

Để làm cho truy vấn về số lượng đơn giản hơn, hãy ghi đè lớp phân trang DRF sử dụng:

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. Cách Tand () hoạt động trong PostgreSQL

  2. Postgres COUNT số giá trị cột với INNER JOIN

  3. Đặt application_name trên Postgres / SQLAlchemy

  4. Các giao dịch không hoạt động cho MySQL DB của tôi

  5. Cách liệt kê Cơ sở dữ liệu và Bảng trong PostgreSQL