Документ Mysql Оптимизация предложения WHERE: постоянные выражения, используемые индексами, оцениваются только один раз

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

Где my_column = 3 * 5

Strawberry 25.05.2018 08:40
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
1
47
1
Перейти к ответу Данный вопрос помечен как решенный

Ответы 1

Ответ принят как подходящий

Любое выражение, которое оптимизатор может преобразовать в константу, преобразуется в константу и не оценивается для каждой строки.

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) для каждой строки и сравнит их.

Другие вопросы по теме