1) Да , изберете с NOLOCK
ще завърши по-бързо от обикновения избор.
2) Да , изберете с NOLOCK
ще позволи на други заявки към извършената таблица да завършат по-бързо от нормалния избор.
Защо би било това?
NOLOCK
обикновено (в зависимост от вашия DB двигател) означава да ми дадете вашите данни и не ме интересува в какво състояние са и не се притеснявайте да го държите неподвижно, докато четете от него. Всичко е наведнъж по-бързо, по-малко ресурсоемко и много опасно.
Трябва да бъдете предупредени никога да не правите актуализация от или да извършвате нещо критично за системата или където се изисква абсолютна коректност с помощта на данни, произхождащи от NOLOCK
Прочети. Напълно възможно е тези данни да съдържат редове, които са били изтрити по време на изпълнението на заявката или които са били изтрити в други сесии, които все още не са финализирани. Възможно е тези данни да включват редове, които са били частично актуализирани. Възможно е тези данни да съдържат записи, които нарушават ограниченията за външния ключ. Възможно е тези данни да изключват редове, които са били добавени към таблицата, но тепърва трябва да бъдат записани.
Наистина нямате начин да разберете какво е състоянието на данните.
Ако се опитвате да получите неща като брой редове или други обобщени данни, при които някаква граница на грешка е приемлива, тогава NOLOCK
е добър начин за повишаване на производителността за тези заявки и избягване на тяхното отрицателно въздействие върху производителността на базата данни.
Винаги използвайте NOLOCK
подсказвайте с голямо внимание и третирайте подозрително всички данни, които връща.