Если у вас есть индекс «col», то при выполнении вашего первого запроса обновится миллионы строк независимо; Ваш второй запрос потенциально обновит только несколько и быстро их найдет, если будет доступен индекс. Если у вас нет индекса для этого столбца, эффект будет незначительным, поскольку необходимо выполнить полное сканирование таблицы или индекса, чтобы проверить все строки в вашей таблице (у вас будет меньше фактических обновлений, но это так).
Весь смысл ограничения ваших запросов с помощью предложений WHERE состоит в том, чтобы уменьшить объем вашего запроса, например. количество строк, на которые должен смотреть SQL Server. Меньше данных для обработки - всегда быстрее, чем просто делать это для всех миллионов строк ......
В ответ на ваше обновление : основная цель использования предложения WHERE - сократить количество строк, которые необходимо проверить / коснуться. Если у вас есть средство (обычно индекс), чтобы уменьшить это число со 100% до нескольких процентов, то это определенно стоит того. В этом весь смысл наличия индексов (в основном для SELECT, но, разумеется, относится и к другим операциям).
Если у вас есть подходящий индекс, и, таким образом, вы можете выделить несколько сотен строк, чтобы проверить соответствие критерию, а не проверять миллионы строк, вы всегда будете быстрее. Если у вас есть хороший книжный указатель в книжном магазине, который легко направит вас к двум полкам, где находятся интересующие вас книги, вы найдете то, что ищете, быстрее, чем когда вам придется пересекать весь книжный магазин. так как нет доступного индекса.
Очевидно, что существует точка, в которой еще один критерий или индекс больше не помогают. Если это так, то, как правило, еще одно предложение WHERE не очень поможет - или вообще не поможет. Но в этом случае оптимизатор SQL-запросов найдет эти случаи и отфильтрует их (возможно, даже просто игнорируя их при выборе наилучшего плана выполнения запроса).