Проблема с производительностью в Django обычно вызвана следующими отношениями в цикле, которые вызывают несколько запросов к базе данных. Если у вас установлено django-debug-toolbar, вы можете проверить, сколько запросов вы делаете, и выяснить, какой запрос нужно оптимизировать. Панель инструментов отладки также показывает время каждого запроса, что необходимо для оптимизации django, вы много пропускаете, если его не установили или не использовали.
Как правило, вы решаете проблему следующих отношений, используя select_related() или prefetch_related().
На странице обычно должно быть больше 20-30 запросов, и это серьезно повлияет на производительность. На большинстве страниц должно быть только 5-10 запросов. Вы хотите уменьшить количество запросов, потому что поездка туда и обратно является убийцей номер один для производительности базы данных. В общем случае один большой запрос быстрее, чем 100 небольших запросов.
Убийца номер два по производительности базы данных намного реже, хотя иногда это происходит из-за методов, которые уменьшают количество запросов. Ваш запрос может быть просто слишком большим, если это так, вы должны использовать defer() или only(), чтобы не загружать большие поля, которые, как вы знаете, вы не будете использовать.
Если вы говорите, что тот же SQL-код работает нормально при запуске вручную, вам не нужно оптимизировать этот код. – wRAR
Проблема заключается в том, что сервисы запросов для извлечения элементов из каталога с указанными параметрами, а также он использует модели CMS, у которых есть некоторые, которые не так понятны для понимания конкретных функций. – user2115719