I have no good answer for either of these questions.
This has come up a couple of times in support cases and the solution has been a re-write of the SP, or a mixture of delete / truncate against the tables.
Hopefully you have a working solution you can use ( i presume indexing helped
) ? If not, let me know and i can forward you on a potential alternative...