В операторе обновления находятся Nolock Hint Honted в разделе «Из»?

StackOverflow https://stackoverflow.com/questions/4070089

Вопрос

Учитывая следующее заявление об обновлении:

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)

Будут ли подсказки (NOLOCK) на table_1 и table_2?

Это было полезно?

Решение

Будут ли подсказки (NOLOCK) на table_1 и table_2?

Да, они будут.

Обратите внимание, что в целом это поведение очень неправильно И если вы думаете, что вам действительно нужно это, скорее всего, вы должны переделать вашу базу данных и / или приложение.

Какова цель NOLOCK Подсказки? Почему вы хотите обновить вашу переменную таблицы с помощью грязных данных?

Другие советы

Nolock Hint почти каким-либо образом увеличивает производительность сервера. Однако (NOLOCK) подсказку можно безопасно использовать при доступе к данным, либо гарантированно не изменяются в тот момент (например, после того, как часть данных размещена в БД, она останется без изменений, или вы знаете, что текущая часть данных не будет изменена другими пользователями) или если это не имеет значения, чтобы принимать старые данные или новые данные (например, некоторые данные часто меняются, и никак нет необходимости сохранять ровно новейшую). Так же, как вы можете получить расхождение данных в разных таблицах ...

Лицензировано под: CC-BY-SA с атрибуция
Не связан с StackOverflow
scroll top