OK, I aggree: The use of dynamic SQL makes it hard or impossible for the Optimzer to optimize the Execution. That's also the reason why we don't work with ApplyFilter()...
Nevertheless I would like to know if it's possible to use dynamic Contains-Statements, but did not get it working. So I give up right now...