Básicamente, sí:la detección de parámetros (en algunos niveles de parche de) SQL Server 2005 está muy dañada. He visto planes que efectivamente nunca se completan (en cuestión de horas en un conjunto de datos pequeño) incluso para conjuntos de datos pequeños (unas pocas miles de filas) que se completan en segundos una vez que se enmascaran los parámetros. Y esto es en los casos en que el parámetro siempre ha sido el mismo número. Agregaría que al mismo tiempo que estaba lidiando con esto, encontré muchos problemas con LEFT JOIN/NULL que no se completaban y los reemplacé con NOT IN o NOT EXISTS y esto resolvió el plan a algo que se completaría. Nuevamente, un problema de plan de ejecución (muy pobre). En el momento en que estaba lidiando con esto, los administradores de bases de datos no me daban acceso a SHOWPLAN, y desde que comencé a enmascarar todos los parámetros de SP, no he tenido más problemas con el plan de ejecución en los que tendría que profundizar en esto para que no se complete. .
En SQL Server 2008 puede usar OPTIMIZE FOR UNKNOWN
.