• Looking at the plans, the first thing that jumps out is that the estimates are different between the two plans. This suggests that you either have completely different data sets or completely different sets of statistics for the same data set. It has to be one or the other. The optimizer works from the statistics it has and yours are absolutely different.

    That said, one plan is parallel and the other is not. Do you have different cost threshold for parallelism between the two servers? Do the two servers have different numbers of CPUs? Does one of them have affinity or something else along those lines different than the other?

    You also have a warning on the temp table on the poorly performing plan. It's missing statistics. Are auto-update stats turned off on that server?

    Those are the initial things I can see that you can check into to see why you're getting such different plans between the two servers.

    "The credit belongs to the man who is actually in the arena, whose face is marred by dust and sweat and blood"
    - Theodore Roosevelt

    Author of:
    SQL Server Execution Plans
    SQL Server Query Performance Tuning