Недавно меня втянули в кабинет начальника и сказали, что один из моих запросов замедляет работу системы.Затем мне сказали, что это потому, что мое предложение WHERE
началось с 1 = 1
.В моем сценарии я просто добавлял каждое условие поиска к запросу, поэтому я добавил 1 = 1
, чтобы я мог просто добавить AND
перед каждым поиском.Мне сказали, что это приводит к тому, что запрос выполняет полное сканирование таблицы, прежде чем сузить результаты.
Я решил проверить это.У нас есть таблица user
с 14 000 записей.Запросы выполнялись пять раз, используя phpmyadmin и PuTTY.В phpmyadmin я ограничил количество запросов до 500, но в PuTTY ограничений не было.Я пробовал несколько разных базовых запросов и пытался рассчитать их время.Я обнаружил, что 1 = 1
, по-видимому, приводит к тому, что запрос выполняется быстрее, чем просто запрос без условия WHERE
.Это в реальной базе данных, но, похоже, результаты были довольно последовательными.
Я надеялся опубликовать здесь и посмотреть, может ли кто-нибудь или сломать результаты для меня или объяснить мне логику для любой из сторон этого.![alt text](https://i.stack.imgur.com/lf0En.png)