Normalmente eu uso a getdate()
função em minhas cláusulas where para voltar no tempo. Algo como:
DOC.DATUM >= DATEADD(DD,-1*SSN_SDO.DANA_ZA_POVRAT,GETDATE())
O SQL Server 2008R2 executará consultas mais rapidamente se eu primeiro declarar um parâmetro de data e usá-lo em minhas consultas?
declare @dateNow date = getdate()
...
where
DOC.DATUM >= DATEADD(DD,-1*SSN_SDO.DANA_ZA_POVRAT,@dateNow )
A resposta é - você tem que testar para descobrir.
Eu fiz um teste em uma tabela que tem aproximadamente 8.000.000 linhas
No meu caso, o uso da variável fez com que o SQL Server estimasse um plano caro:
o motivo é que o SQL Server constrói o plano de consulta durante a compilação,
nesse momento o valor da variável ainda não é conhecido e o SQL Server não pode usar as estatísticas.
Sugiro que você leia sobre parametrização
Existem outros casos em que o uso da variável custará menos do que chamar uma função várias vezes,
então aqui está novamente - TEST TEST e TEST :)
Mais importante ainda, a principal razão pela qual você precisa colocá-lo em uma variável é se você deseja que o mesmo valor (GETDATE() naquele exato momento) seja usado em outro lugar no código. Caso contrário, a diferença de desempenho é realmente um ponto discutível.