Медленное время отклика API Django Tastypie с подсчетом аннотаций и пагинацией

Я работаю с Django Tastypie API, который обрабатывает большой QuerySet. Мне нужно выполнить аннотацию с Count для связанной таблицы, которая также очень большая. После этого я возвращаю ответ, используя paginator для обработки пагинации. Однако API требует значительного времени для возврата результатов.

Вот упрощенная версия аннотации, которая, похоже, вызывает наибольшую задержку:

.annotate(
    dynm_calc=Count('devices', filter=Q(devices__groups__id__in=ids_list), distinct=True)
)

Мои основные проблемы:

  • Оценка набора запросов: Оценивается ли весь QuerySet, несмотря на использование пагинации? Если да, то может ли это быть причиной медленного времени отклика?

  • Оптимизация производительности: Как я могу оптимизировать этот запрос или улучшить производительность ответа API?

  • Разделение набора запросов: Будет ли полезно разделить QuerySet на более мелкие части перед применением аннотации? Если да, то как это можно эффективно реализовать?

Любые соображения или предложения о том, как решить эту проблему, будут очень признательны. Спасибо!

Вернуться на верх