Do you get different performance based on parameter values?. If yes, you can create the procedure using WITH RECOMPILE option so it generates a new plan for every execution.

I see that you are using a temp table #results, you can convert that to a table variable as well.