Sembra sniffing dei parametri.
Ecco una bella spiegazione:Sento un parametro!
Fondamentalmente, il server sql ha memorizzato nella cache il piano di esecuzione delle query per i parametri con cui è stato eseguito per la prima volta, quindi il piano non è ottimale per i nuovi valori che stai passando. Quando esegui direttamente la query, il piano viene generato in quel momento, ecco perché è veloce.
È possibile contrassegnare manualmente la procedura per la ricompilazione utilizzando sp_ricompilare oppure usa l'opzione With Recompile nella sua definizione in modo che venga compilata ad ogni esecuzione.