Frage

In Anbetracht der folgende Update-Anweisung:

UPDATE @TableVariable
SET city = T2.city
FROM @TableVariable TV
INNER JOIN dbo.TABLE_1 T1 WITH (NOLOCK)
    ON  (TV.customer_id = T1.customer_id)
INNER JOIN dbo.TABLE_2 T2 WITH (NOLOCK)
    ON  (T1.address_id = T2.address_id)

Werden die (NOLOCK) Hinweise auf table_1 und table_2 geehrt werden?

War es hilfreich?

Lösung

  

Werden die (NOLOCK) Hinweise auf table_1 und table_2 geehrt werden?

Ja, das werden sie.

Beachten Sie, dass im Allgemeinen, ist dieses Verhalten sehr falsch , und wenn Sie denken, dass Sie das wirklich brauchen, wahrscheinlich, sollten Sie Ihre Datenbank neu zu gestalten und / oder App.

Was ist der Zweck der NOLOCK Hinweise? Warum wollen Sie Ihren Tabellenvariable mit schmutzigen Daten aktualisieren?

Andere Tipps

NOLOCK-Hinweis nahezu beliebig erhöhen Server Produktivität. Allerdings (NOLOCK) Hinweis sicher verwendet werden kann, wenn Zugriff auf die Daten entweder enought garantiert nicht in diesem Moment sich zu ändern (zum Beispiel einmal Datenteil DB geschrieben wird, wird es bleiben unverändert oder Sie wissen, dass die aktuellen Teil der Daten wird nicht geändert von anderen Benutzern), oder wenn es keine Rolle, alte Daten oder neue Daten zu übernehmen (zum Beispiel oft einige Daten verändert und in irgendeiner Art und Weise gibt es keine Notwendigkeit zu sparen genau die aktuellen eins). In anderer Art und Weise können Sie Divergenz von Daten in verschiedenen Tabellen bekommen ...

Lizenziert unter: CC-BY-SA mit Zuschreibung
Nicht verbunden mit StackOverflow
scroll top