1) Tak , wybór z NOLOCK
zakończy się szybciej niż normalny wybór.
2) Tak , wybór za pomocą NOLOCK
pozwoli na wykonanie innych zapytań względem wykonanej tabeli szybciej niż normalny wybór.
Dlaczego miałoby to być?
NOLOCK
zazwyczaj (w zależności od silnika DB) oznacza, że podaj mi swoje dane, a ja nie dbam o to, w jakim jest stanie, i nie zawracam sobie głowy trzymaniem ich w miejscu podczas czytania. Wszystko to naraz jest szybsze, mniej zasobochłonne i bardzo bardzo niebezpieczne.
Powinieneś zostać ostrzeżony, aby nigdy nie przeprowadzać aktualizacji ani nie wykonywać niczego krytycznego dla systemu lub gdy wymagana jest absolutna poprawność przy użyciu danych pochodzących z NOLOCK
odczytu. Jest absolutnie możliwe, że dane te zawierają wiersze, które zostały usunięte podczas uruchamiania zapytania lub zostały usunięte w innych sesjach, które jeszcze nie zostały sfinalizowane. Możliwe, że dane te zawierają częściowo zaktualizowane wiersze. Możliwe, że dane te zawierają rekordy, które naruszają ograniczenia klucza obcego. Możliwe, że dane te nie obejmują wierszy, które zostały dodane do tabeli, ale nie zostały jeszcze zatwierdzone.
Naprawdę nie masz sposobu, aby dowiedzieć się, jaki jest stan danych.
Jeśli próbujesz uzyskać takie dane, jak liczba wierszy lub inne dane podsumowujące, w których dopuszczalny jest pewien margines błędu, NOLOCK
to dobry sposób na zwiększenie wydajności tych zapytań i uniknięcie negatywnego wpływu na wydajność bazy danych.
Zawsze używaj NOLOCK
podpowiedzi z wielką ostrożnością i traktuj wszelkie dane, które zwraca podejrzliwie.