Eu tenho um procedimento armazenado que tem algumas linhas:
AND ( @StartDate IS NULL OR @StartDate <= r.ReferralDate )
AND ( @EndDate IS NULL OR @EndDate >= r.ReferralDate )
Deve ser reescrito como:
AND ( r.ReferralDate >= @StartDate or @Startdate IS NULL )
AND ( r.ReferralDate <= @EndDate or @EndDate IS NULL )
Eu tentei das duas maneiras e olhando para os planos de execução. Há uma pequena diferença no número estimado de linhas, mas fora isso não vejo uma mudança, então presumi que a ordem na instrução não importava, mas esperava que alguém pudesse verificar.
A resposta curta é que a ordem em que você os coloca não faz diferença para a SARGability. Se desejar que isso seja o mais eficiente possível, você pode adicionar uma dica RECOMPILE ou usar SQL dinâmico para gerar a cláusula WHERE apropriada.
Como você parece entender os conceitos envolvidos, não vou bater em nenhum cavalo morto aqui, apenas indicarei uma ótima fonte sobre o assunto: Condições de Pesquisa Dinâmica em T‑SQL