Я бы порекомендовал выполнить выборку, подобную той, что была у вас выше (без предложения 10 лучших), чтобы извлечь идентификаторы записей, которые вы хотите обновить (при условии, что Id проиндексирован), во временную промежуточную таблицу. Ваш выбор будет сканировать всю таблицу, но это лучше, чем делать это в операторе обновления. Если вы можете использовать Read Committed Snapshot Isolation, это будет еще лучше для параллелизма. Если вам нужно использовать метод зацикливания, то есть итеративную проверку небольшого набора записей, используйте идентификатор (или некоторый столбец с возможностью поиска) в качестве основного фильтра, чтобы получить блок записей для сопоставления с образцом и продолжить до завершения. Т.е. как то так:
Select top x id
From Table
where Id between 1 and 100000
And Textcolumn like('%blah%')
Затем продолжайте итерацию, пока не дойдете до всех диапазонов идентификаторов.
Затем, когда у вас есть идентификаторы для обновления, запустите обновление вместо них.
Как говорит Дмитрий, 10 лучших по-прежнему будут сканировать всю таблицу для этого типа запроса , так что это просто замедлит вас. Если у вас есть идентификаторы или что-то, что делает запрос доступным для поиска, вы можете включить в него предложение top x, чтобы уменьшить влияние параллелизма, но это, вероятно, будет иметь смысл только в том случае, если на вас влияет очень большое количество записей.