Вот демонстрация, чтобы доказать, что MySQL выполняет короткое замыкание предложения WHERE :
http://rextester.com/GVE4880
Запускаются следующие запросы:
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
Единственная разница между ними - это порядок операндов в условии ИЛИ.
myslowfunction
намеренно спит на секунду и имеет побочный эффект добавления записи в таблицу журнала при каждом запуске. Вот результаты того, что регистрируется при выполнении вышеупомянутых двух запросов:
myslowfunction called for query #1 with value 1
myslowfunction called for query #1 with value 2
myslowfunction called for query #2 with value 1
myslowfunction called for query #2 with value 2
myslowfunction called for query #2 with value 3
myslowfunction called for query #2 with value 4
Выше показано, что медленная функция выполняется чаще, когда она появляется слева от условия ИЛИ, когда другой операнд не всегда имеет значение true (из-за короткого замыкания).