Se parece a detección de parámetros
Aquí hay una buena explicación:¡Huelo un parámetro!
Básicamente, el servidor sql tiene un plan de ejecución de consultas en caché para los parámetros con los que se ejecutó por primera vez, por lo que el plan no es óptimo para los nuevos valores que está pasando. Cuando ejecuta la consulta directamente, el plan se genera en ese momento, por eso es rápido.
Puede marcar el procedimiento para la recompilación manualmente usando sp_recompilar o use la opción With Recompile en su definición para que se compile en cada ejecución.