SQL Server guarda "planes" de cómo ejecutar código.
Si un procedimiento almacenado se ejecuta en un pequeño subconjunto de datos, se optimizará para un pequeño conjunto de datos. Lo contrario es cierto para un gran conjunto de datos.
Hay un buen OPTIMIZE FOR
función en 2008 pero en 2005 está atascado con WITH RECOMPILE
. Esto significa que se volverá a compilar cada vez que se ejecute, lo que, en algunos casos, es lo más óptimo.