• I've seen the same as everyone else - most things are the same or better, a few are very much worse.

    My best advice if you have a lot of similar code that has the same issue is to simplify a copy of the query until it gets fast - including removing required pieces of functionality - until it gets fast (suddenly), then put the piece you removed back in and remove other pieces.

    Once you're at the point where it's slow, but removing anything makes it fast, you know that section of all those queries needs to change.  In one case I saw it was an extremely simply construct that was quite logical and worked quickly before, but got a really bad plan on the new one (a pointless cartesian self join) with the new version's query plan.  A slight redesign got a good plan again, and had to be updated in all similar queries.

    We ended up rolling in a couple other enhancements to those queries at the same time for a really significant performance gain after the work was done!