1) Ja , een selectie met NOLOCK
wordt sneller voltooid dan een normale selectie.
2) Ja , een selectie met NOLOCK
zal toestaan dat andere zoekopdrachten op de betreffende tabel sneller worden voltooid dan een normale selectie.
Waarom zou dit zijn?
NOLOCK
meestal (afhankelijk van je DB-engine) betekent geef me je gegevens, en het kan me niet schelen in welke staat het zich bevindt, en doe niet de moeite om het stil te houden terwijl je ervan leest. Het is allemaal tegelijk sneller, minder arbeidsintensief en heel erg gevaarlijk.
U moet worden gewaarschuwd om nooit een update uit te voeren of iets uit te voeren dat kritiek is op het systeem, of waar absolute correctheid vereist is met behulp van gegevens die afkomstig zijn van een NOLOCK
lezen. Het is absoluut mogelijk dat deze gegevens rijen bevatten die zijn verwijderd tijdens het uitvoeren van de query of die zijn verwijderd in andere sessies die nog moeten worden afgerond. Het is mogelijk dat deze gegevens rijen bevatten die gedeeltelijk zijn bijgewerkt. Het is mogelijk dat deze gegevens records bevatten die de beperkingen van refererende sleutels schenden. Het is mogelijk dat deze gegevens rijen uitsluiten die aan de tabel zijn toegevoegd maar nog moeten worden vastgelegd.
Je kunt echt niet weten wat de status van de gegevens is.
Als u dingen probeert te krijgen zoals een rijtelling of andere samenvattingsgegevens waarbij een foutmarge acceptabel is, dan NOLOCK
is een goede manier om de prestaties van deze query's te verbeteren en te voorkomen dat ze een negatieve invloed hebben op de databaseprestaties.
Gebruik altijd de NOLOCK
hint met grote voorzichtigheid en behandel alle gegevens die het retourneert verdacht.