É óbvio que o servidor MS Sql suporta a teoria de curto-circuito, para melhorar o desempenho, evitando verificações desnecessárias,
Exemplo de suporte:
SELECT 'TEST'
WHERE 1 = 'A'
SELECT 'TEST'
WHERE 1 = 1 OR 1 = 'A'
Aqui, o primeiro exemplo resultaria no erro 'Falha na conversão ao converter o valor varchar' A 'para o tipo de dados int'.
Enquanto a segunda é executada facilmente, a condição 1 = 1 é avaliada como TRUE e, portanto, a segunda condição não é executada.
Além disso
SELECT 'TEST'
WHERE 1 = 0 OR 1 = 'A'
aqui a primeira condição seria avaliada como falsa e, portanto, o DBMS passaria para a segunda condição e, novamente, você receberá o erro de conversão como no exemplo acima.
OBSERVAÇÃO: ESCREVA A CONDIÇÃO ERRÔNICA APENAS PARA REALIZAR O TEMPO QUE A CONDIÇÃO É EXECUTADA OU CURTA CIRCUITO SE RESULTADOS QUERIDOS EM ERRO SIGNIFICAM A CONDIÇÃO EXECUTADA E CURTA CIRCUITO DE OUTRA FORMA.
EXPLICAÇÃO SIMPLES
Considerar,
WHERE 1 = 1 OR 2 = 2
pois a primeira condição está sendo avaliada como TRUE , não faz sentido avaliar a segunda condição porque sua avaliação em qualquer valor não afetaria o resultado, portanto, é uma boa oportunidade para o Sql Server economizar tempo de execução de consulta ignorando a verificação ou avaliação desnecessária da condição .
no caso de "OR", se a primeira condição for avaliada como VERDADEIRA, toda a cadeia conectada por "OR" será considerada como verdadeira sem avaliar outras.
condition1 OR condition2 OR ..... OR conditionN
se a condição1 for avaliada como verdadeira, descanse todas as condições até que a condiçãoN seja ignorada. Em palavras generalizadas na determinação do primeiro TRUE , todas as outras condições vinculadas por OR seriam ignoradas.
Considere a segunda condição
WHERE 1 = 0 AND 1 = 1
como a primeira condição está sendo avaliada para FALSE avaliada não faz sentido avaliar a segunda condição, porque sua avaliação em qualquer valor não afetaria o resultado; novamente, é uma boa oportunidade para o Sql Server economizar o tempo de execução da consulta ignorando a verificação ou avaliação desnecessária da condição .
no caso de "AND", se a primeira condição for avaliada como FALSE, toda a cadeia conectada com o "AND" seria considerada avaliada como FALSE sem avaliar outras.
condition1 AND condition2 AND ..... conditionN
se a condição1 for avaliada como FALSE , descanse todas as condições até que a condiçãoN seja ignorada. Em palavras generalizadas na determinação do primeiro FALSE , todas as outras condições vinculadas por AND seriam ignoradas.
Portanto, um programador sábio sempre deve programar a cadeia de condições de uma maneira que, menos dispendiosa ou a maioria das condições de eliminação, seja avaliada em primeiro lugar ou altere a condição de uma maneira que possa tirar o máximo benefício de curto-circuito