Где быстрее сортировка в python/django вычисляемых SQL-полей?.. Через models или прямыми SQL-запросами?
Собственно вся суть вопроса в subj.
Наслушался на Django MeetUp про оптимизацию запросов, и про то как криво иногда "рисует" ORM всякие join и union... Мне предстоит довольно интенсивно использовать сортировку по вычисляемым полям, и теперь сомнения на счет скорости ORM. У кого какие будут рекомендации?
Собственно задача найти в миллионах записях (X1, Y1, Z1) наиболее близкие к требуемым (X2, Y2, Z2) и строить распределения всех этих записей. Все усложняется тем, что X, Y, Z -- это только часть данных. После того как по ним будет сделана выборка, надо будет извлечь еще и текстовые поля, их распарсить и по некоторым признакам отсортировать еще разок. Но вторую часть сортировки уже можно, неверное, делать средствами Python без всяких SQL. Там будет не миллионы записей, а максимум одна-две тысячи.
Судя по вопросу, вы сомневаетесь, что бэкенд нормальной БД быстрее, чем аналогичные вычисления с полученными строчками уже на python? Имхо, обработка на стороне бд априори быстрее.
Нет. Вопрос именно в использовании ORM-models или писать raw-запросы прям в SQL и не надеяться, что ORM что-то путевое сотворить.
Кстати, вопрос уже решен. Даже простейшие запросы с GROUP BY напрямую писать оказалось эффективнее чем через ORM (см. комментарии и код к вопросу toster.ru/q/150937).