1) Tak , wybierz z NOLOCK
zakończy się szybciej niż normalny wybór.
2) Tak , wybierz z NOLOCK
pozwoli innym zapytaniom na tabelę, której dotyczy, zakończyć się szybciej niż normalny wybór.
Dlaczego miałoby to być?
NOLOCK
zazwyczaj (w zależności od silnika bazy danych) oznacza, że daj mi swoje dane i nie obchodzi mnie, w jakim są stanie, i nie przejmuj się trzymaniem ich nieruchomo podczas czytania z nich. To wszystko jest jednocześnie szybsze, mniej zasobochłonne i bardzo niebezpieczne.
Powinieneś być ostrzeżony, aby nigdy nie wykonywać aktualizacji lub wykonywać niczego krytycznego dla systemu lub tam, gdzie wymagana jest absolutna poprawność przy użyciu danych pochodzących z NOLOCK
czytać. Jest całkowicie możliwe, że te dane zawierają wiersze, które zostały usunięte podczas wykonywania zapytania lub które zostały usunięte w innych sesjach, które nie zostały jeszcze sfinalizowane. Możliwe, że te dane zawierają wiersze, które zostały częściowo zaktualizowane. Możliwe, że te dane zawierają rekordy, które naruszają ograniczenia klucza obcego. Możliwe, że te dane wykluczają wiersze, które zostały dodane do tabeli, ale jeszcze nie zostały zatwierdzone.
Naprawdę nie masz możliwości sprawdzenia, jaki jest stan danych.
Jeśli próbujesz uzyskać takie rzeczy, jak liczba wierszy lub inne dane podsumowujące, w których dopuszczalny jest pewien margines błędu, wtedy NOLOCK
to dobry sposób na zwiększenie wydajności tych zapytań i uniknięcie ich negatywnego wpływu na wydajność bazy danych.
Zawsze używaj NOLOCK
podpowiadaj z dużą ostrożnością i traktuj wszelkie zwracane dane podejrzliwie.