sql >> データベース >  >> RDS >> PostgreSQL

DjangoRestFrameworkのページネーションが非常に遅いカウント

    問題は、カウントに使用されるクエリが、データのフェッチに使用されるクエリと同じ潜在的に複雑なクエリであるということです。それはかなり無駄です。 PageNumberPagination Django独自のPaginatorを使用します 内部的に。

    カウントのクエリを簡単にするには、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. Concat関数が機能していません-引数の数が無効です

    2. 別のテーブルの列を更新する挿入トリガー後のmysql

    3. PostgreSQLのパフォーマンスをベンチマークする方法

    4. 給与データモデル