saintbyte
@saintbyte
Django developer

Как разогнать Django ORM?

Создал я значит модель и в ней куча ForeignKey . И судя по всему ORM создает какой-то Join'ов и из-за этого все плохо со скоростью отдачи . Подскажите какие есть приличные способы оптимизации? Базу данных разгонять не предлагать - она и так вся в памяти.
  • Вопрос задан
  • 572 просмотра
Решения вопроса 1
sim3x
@sim3x
Приведи свои модели к 3 нормальной форме
Потом кешируй ответ

Потом "разгоняй орм"
Ответ написан
Пригласить эксперта
Ответы на вопрос 3
un1t
@un1t
поставь django-debug-toolbar и профилируй запросы, используй prefetch_related
Ответ написан
Комментировать
@emacsway
Правильно сказали - нужно профилировать запросы. Сперва нужно установить причину. Найти тормозный запрос, проверить индексы, посмотреть в EXPLAIN. По своему опыту скажу, что Джанго ORM иногда создает такие запросы (например, исключение через подзапрос и т.п.), что единственное приемлемое решение будет не использовать билдер запросов от Джанги, а использовать Raw-SQL. Однако я не большой сторонник Raw-SQL, и меня в таком случае часто выручает эта библиотечка для построения SQL запросов. Если делается много одиночных запросов связями, - то prefetch_related().
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы