Recebi uma reclamação por uma incrível lentidão de consulta em nosso software de impressão de etiquetas. Com o SQL Profiler, recebi a consulta do infrator e comecei a testar no SSMS com desempenho muito ruim (por volta de 00:50:00 ). A consulta é longa e as tabelas são grandes, mas há um
WHERE
...
fieldX > {ts '2016-01-01 00:00:00} /* fieldX is a DATETIME */
...
eu mudei para
WHERE
...
fieldX > DATEADD(YYYY, -1, GETDATE())
...
E o tempo de execução agora mostra 00:00:00 !!
Eu só quero entender por quê?
Eu recomendei (originalmente, nos comentários) que o HEDMON tentasse algumas datas diferentes. Como a data de teste e as datas de produção eram diferentes, parecia possível que houvesse um problema de seletividade com as datas; que o SQL poderia retornar os dados muito mais rápido com uma data mais recente do que com uma mais antiga.
HEDMON tentou isso e descobriu (a partir de seus comentários) que as datas de 25/02/2017 responderam rapidamente, enquanto as datas anteriores eram lentas.
Com isso, sentiu-se confortável que a apresentação da data (usando a
{ts }
sintaxe) não tinha nada a ver com a questão.