У меня есть SQL, который может быть упрощен до:Как устранить дублирование вычислений в SQL?
SELECT *
FROM table
WHERE LOCATE(column, :keyword) > 0
ORDER BY LOCATE(column, :keyword)
Вы можете видеть, что есть дубликат «LOCATE (колонок,: ключевое слово)». Есть ли способ рассчитать его только один раз?
Кроме того, в случае, если вы не знали , многие базы данных позволяют создавать индекс для функции или вычисления. Поэтому, если вы обнаружите, что выполняете множество запросов на основе LOCATE (column,: keyword), вы можете создать индекс, в котором это значение было предварительно вычислено и сохранено, чтобы увеличить скорость запросов. –
Вы уверены, что LOCATE вызывается дважды? – tster
tster правильно - многие двигатели sql оптимизируют это. –