Aqui está uma demonstração mostrando a ordem das condições da cláusula WHERE podem fazer a diferença devido ao curto-circuito. Ele executa as seguintes consultas:
-- 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;
A única diferença entre eles é a ordem dos operandos no
OR
doença. myslowfunction
dorme deliberadamente por um segundo e tem o efeito colateral de adicionar uma entrada a uma tabela de log cada vez que é executado. Aqui estão os resultados do que é registrado ao executar as duas consultas: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
O acima mostra que uma função lenta é executada mais vezes quando aparece no lado esquerdo de um
OR
condição quando o outro operando nem sempre é verdadeiro. Então IMO a resposta para a pergunta:
é "Às vezes pode fazer."