Ето демонстрация показващ реда на условията на клаузата WHERE може правят разлика поради късо съединение. Той изпълнява следните заявки:
-- query #1
SELECT myint FROM mytable WHERE myint >= 3 OR myslowfunction('query #1', myint) = 1;
-- query #2
SELECT myint FROM mytable WHERE myslowfunction('query #2', myint) = 1 OR myint >= 3;
Единствената разлика между тях е реда на операндите в OR
състояние.
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
Горното показва, че бавна функция се изпълнява повече пъти, когато се появи от лявата страна на OR
условие, когато другият операнд не винаги е вярно.
Така че IMO отговорът на въпроса:
е "Понякога може."