NOLOCK
nie dotyczy części zapytania, która odwołuje się do tabeli, która ma zostać zmodyfikowana. W instrukcjach aktualizacji programu SQL Server na krótko zablokuj każdy wiersz podczas testowania. Jest to mechanizm unikania impasu. Zapobiega to wielokrotnym aktualizacjom każdego wiersza S-lock do odczytu, a następnie próbuje go zablokować.
Nie możesz sprawić, że U-locks znikną AFAIK. Możesz jednak zredukować liczbę rzędów z blokadą U do absolutnego minimum, łącząc się samoczynnie:
update t1
set ...
from T t1 with (rowlock)
where t1.ID in (select TOP 5 ID from T t2 with (nolock) where ... order by ...)
To dodaje trochę narzutu, ale pozwala na użycie NOLOCK
do czytania.
Rozważ użycie izolacji migawki do odczytów. NOLOCK
ma pewne problemy, takie jak losowe przerywanie zapytań.