SQL Server-Tabelle sperrt in der langen Abfrage - Lösung: NoLock?

In einem Bericht in meiner Anwendung wird eine Abfrage ausgeführt, die zwischen 5 und 15 Sekunden dauert (beschränkt auf die Anzahl der zurückgegebenen Zeilen). Die Abfrage hat 8 Verknüpfungen zu fast allen Haupttabellen meiner Anwendung (Kunden, Verkäufe, Einheiten usw.).

Ein kleines Tool zeigt mir, dass in dieser Zeit alle diese 8 Tabellen mit einer gemeinsamen Tabellensperre gesperrt sind. Das bedeutet, dass in dieser Zeit keine Aktualisierung durchgeführt wird.

Eine Lösung eines Freundes ist, dass jeder Join in der Abfrage, der nicht zu 100% korrekt sein muss (Dirty Read), mit einem NoLock versehen wird, sodass nur 1 dieser 8 Tabellen vollständig gesperrt wird. Ist das eine gute Lösung? Entsperren Sie für einen Bericht, in dem 99% der Daten aus einer Tabelle stammten, die "less prio" -Tabellen.

Antworten auf die Frage(3)

Ihre Antwort auf die Frage