NOLOCK
не се отнася за частта от заявката, която препраща към таблицата, която трябва да бъде модифицирана. В инструкциите за актуализиране на SQL Server U-заключете всеки ред за кратко, докато се тества. Това е механизъм за избягване на задънена улица. Предотвратява множество актуализации за всеки S-заключване на ред за четене и след това опит за X-заключване.
Не можете да накарате U-бравите да изчезнат AFAIK. Но можете да намалите броя на U-заключените редове до абсолютния минимум чрез самосъединяване:
update t1
set ...
from T t1 with (rowlock)
where t1.ID in (select TOP 5 ID from T t2 with (nolock) where ... order by ...)
Това добавя малко допълнителни разходи, но ви позволява да използвате NOLOCK
за четене.
Обмислете използването на изолация на моментни снимки за четенията. NOLOCK
има определени проблеми като произволно прекъсване на заявки.