Постоянные выражения, используемые индексами, оцениваются только один раз. что это значит ? Приведите пример






Любое выражение, которое оптимизатор может преобразовать в константу, преобразуется в константу и не оценивается для каждой строки.
WHERE start_date >= DATE_SUB(CURDATE(), INTERVAL 1 MONTH)
Если запустить сегодня, этот запрос будет в точности эквивалентен этому ...
WHERE start_date >= '2018-04-25'
... но не только логически эквивалентно. Он будет выполнен идентично, потому что выражение DATE_SUB(CURDATE(), INTERVAL 1 MONTH) может быть уменьшено до константы, и оптимизатор делает это при планировании запроса.
Таким образом, можно будет легко найти строки из индекса на start_date, которые> = '2018-04-25'.
Сервер нет извлечет start_date из каждой строки, а затем оценит DATE_SUB(CURDATE(), INTERVAL 1 MONTH) для каждой строки и сравнит их.
Где my_column = 3 * 5