Tengo una consulta SQL que se ejecuta muy rápido, alrededor de un segundo, cuando no esté utilizando variables, como:¿Por qué SQL Server se ralentiza cuando se usan variables?
WHERE id BETWEEN 5461094 and 5461097
Pero cuando tengo:
declare @firstId int
declare @lastId int
set @firstId = 5461094
set @lastId = 5461097
...
WHERE id BETWEEN @firstId and @lastId
... la consulta se ejecuta muy lento , terminando solo después de algunos minutos. ¿Por que sucede? Necesito usar variables. ¿Puedo hacer alguna mejora para evitar estos problemas de rendimiento?
En Oracle, si el rango fuera siempre pequeño, todo estaría bien. Elegiría el plan basado en las primeras variables. Si siempre es pequeño, siempre estás bien. Son los casos que oscilan entre los extremos. Creo que SS agregó algo así como mirar a escondidas recientemente ... tal vez '05 o '08. –