We have a stored proceudre in our database that updates the table, combining 2 tables by 30 columns with the where clause. SQL is in the general format:
UPDATE Target SET col1 = Source.col1 INNER JOIN Source on ISNULL(Target.Col2, '') = ISNULL(Source.Col2, '') and ISNULL(Target.Col3, '') = ISNULL(Source.Col3, '') and . . . ISNULL(Target.Col31, '') = ISNULL(Source.Col31, '') and
A plan is requested here. Save it to your PC and open it again so that it scales better.

The source table has 65M records, Target 165M. He used to work for a few minutes. Given how ugly and potentially inefficient the request is, I find this amazing. This month he worked for 1.5 hours, used 100% of the processor, and we had to kill him.
Any suggestions for improvising the request below and running it on time ..?
We have indices of one column on several columns used in a 30-col join condition.
I know the ISNULL function, and the connection on 30 columns is nuts, and this is a bad design. Do not blame me, I inherited this economy.
Unfortunately, there is no time for redesigning. Any suggestions?
Chadd
source share