@Kristen, here are the results. No indexes changed or added. Tested on actual data (copied to test machine).
Test 1: ISNULL
Table '#tmpCurrentContactInfo'. Scan count 3, logical reads 27442, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'DMG_Changes'. Scan count 3, logical reads 154784, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2391 ms, elapsed time = 16361 ms.
(49230 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Test 2: No ISNULL
Table '#tmpCurrentContactInfo'. Scan count 3, logical reads 27442, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'DMG_Changes'. Scan count 3, logical reads 154784, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
Table 'Worktable'. Scan count 0, logical reads 0, physical reads 0, read-ahead reads 0, lob logical reads 0, lob physical reads 0, lob read-ahead reads 0.
SQL Server Execution Times:
CPU time = 2109 ms, elapsed time = 1558 ms.
(49230 row(s) affected)
SQL Server Execution Times:
CPU time = 0 ms, elapsed time = 0 ms.
Test 3: no null to null check - ON (target.MatterNum = source.MatterNum OR target.RefNum = source.RefNum)
I declare a failure! Taking much too long so I do not know if it actually works.