Какое влияние оказывает производительность на порядок составного запроса sqlalchemy? - PullRequest
1 голос
/ 07 октября 2019

Я делаю следующий запрос, используя flask-sqlalchemy. Он отлично работает в обоих направлениях, но мне интересно, по мере роста моей таблицы, будет ли какое-либо влияние на производительность при ее заказе так или иначе:

Опция 1:

things = Thing.query.filter(Thing.id != 5).order_by(Thing.id.desc()).limit(20).all()

Вариант 2 (order_by и фильтр поменялись местами):

things = Thing.query.order_by(Thing.id.desc()).filter(Thing.id != 5).limit(20).all()

Спасибо!

1 Ответ

2 голосов
/ 07 октября 2019

В то время как грамматика SQL довольно строга относительно порядка предложений, которые формируют оператор, построитель запросов ORM в SQLAlchemy является генеративным. Он позволяет добавлять критерии и параметры более непринужденно, и перед выполнением он компилируется для получения окончательного SQL. В этом свете ваши два запроса приводят к одинаковому SQL и, следовательно, не имеют разницы в производительности.

...