Низкая производительность запросов Django, если она не ограничена
У меня есть относительно простое представление, которое я использую для AJAX запросов, которое принимает простой ORM запрос и отображает его в виде строки. Я не включил построение параметров, так как я протестировал метод и изолировал проблему от отображения результатов запроса в шаблоне.
Products.objects.filter(**params)
return render_as_string('templates/product.html', {'products': products'}, request)
Запрос возвращает 1255 записей, что не так уж и много, но на выполнение AJAX-запроса уходит 31 секунда. Однако, если я сокращу/ограничу запрос до 1255 строк следующим образом:
Products.objects.filter(**params)[:1255]
return render_as_string('templates/product.html', {'products': products'}, request)
то AJAX-запрос займет всего 1,2 секунды. Все еще меньше, чем идеально, но я могу работать с этим. Я планирую настроить пагинацию, чтобы довести время до комфортного уровня, но меня смущает основной вопрос. Я передаю для рендеринга то же количество строк, что и строка.