1) Ja , eine Auswahl mit NOLOCKwird schneller abgeschlossen als eine normale Auswahl.
2) Ja , mit einer Auswahl mit NOLOCKkönnen andere Abfragen für die betroffene Tabelle schneller als mit einer normalen Auswahl abgeschlossen werden.
Warum sollte das so sein?
NOLOCKIn der Regel (abhängig von Ihrer DB-Engine) bedeutet dies, dass Sie mir Ihre Daten geben. Es ist mir egal, in welchem Zustand sie sich befinden, und Sie müssen sie nicht stillhalten, während Sie daraus lesen. Es ist auf einmal schneller, weniger ressourcenintensiv und sehr, sehr gefährlich.
Sie sollten gewarnt werden, niemals ein Update von oder etwas Systemkritisches durchzuführen oder wenn absolute Korrektheit unter Verwendung von Daten erforderlich ist, die aus einem NOLOCKLesevorgang stammen. Es ist absolut möglich, dass diese Daten Zeilen enthalten, die während der Ausführung der Abfrage gelöscht wurden oder die in anderen Sitzungen gelöscht wurden, die noch abgeschlossen werden müssen. Möglicherweise enthalten diese Daten Zeilen, die teilweise aktualisiert wurden. Möglicherweise enthalten diese Daten Datensätze, die gegen Fremdschlüsseleinschränkungen verstoßen. Es ist möglich, dass diese Daten Zeilen ausschließen, die der Tabelle hinzugefügt wurden, aber noch festgeschrieben werden müssen.
Sie haben wirklich keine Möglichkeit zu wissen, wie der Status der Daten ist.
Wenn Sie versuchen, Dinge wie eine Zeilenanzahl oder andere Zusammenfassungsdaten zu erhalten, bei denen eine gewisse Fehlerquote akzeptabel ist, dann NOLOCK ist, können Sie die Leistung dieser Abfragen steigern und vermeiden, dass sie sich negativ auf die Datenbankleistung auswirken.
Verwenden Sie den NOLOCKHinweis immer mit großer Vorsicht und behandeln Sie alle zurückgegebenen Daten verdächtig.