@SEOVirus

Как отработает SQL-запрос с выражением в ORDER BY?

Есть такой SQL-запрос, который предположительно будет работать под SQLite и MySQL:
SELECT id, name, col1, col2 FROM table ORDER BY col2/col1 ASC


Он выражение col2/col1 будет пересчитывать при каждом перемещении элементов при сортировке массива или разово для каждой строчки таблицы?
  • Вопрос задан
  • 101 просмотр
Пригласить эксперта
Ответы на вопрос 1
sarapinit
@sarapinit
Точу водой камень
Порядок чтения данных с диска не гарантирует порядок.
Я думаю что:
сначала произойдет считывание строк и вычисление col2/col1
потом сортировка
и результат запроса попадет в кэш БД в оперативке.
Поэтому если запрашивать подряд, то будет возвращаться кэшированный результат.
Но это не точно, потому что надо знать как внутри работает оптимизатор запросов, на исполнение запроса влияет статистика т.е. недетерминированная операция.
Поэтому нужно измерять по месту производительность если это узкое место. А если нет, то особо не запариваться по таким мелочам.
Ответ написан
Ваш ответ на вопрос

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

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