На самом деле, вы обновляете каждую строку каждый раз. Вы должны добавить следующее к предложению where:
AND table1.col1 <> table2.col2
Возможно, вам понадобится добавить ISNULL
оболочки для каждой стороны, если это поля, допускающие пустые значения
Что быстрее: читать книгу или писать над каждым словом в книге одно и то же точное слово? Тот факт, что вы пишете то же значение, что и исходное значение, не меняет того факта, что вы пишете значения.
Теперь, если у вас есть предложение where, отфильтровывающее записи с совпадающими значениями, и у вас все еще очень низкая производительность, то вероятным виновником будет слишком много индексов. Я предполагаю, что это не ваша проблема здесь ...