В инструкции UPDATE учитывается ли подсказка NOLOCK в предложении FROM?
Учитывая следующее заявление об обновлении:
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?
2 ответа
Будут ли выполнены (NOLOCK) подсказки для TABLE_1 и TABLE_2?
Да, они будут.
Обратите внимание, что в целом это поведение очень неправильное, и если вы считаете, что оно вам действительно нужно, скорее всего, вам следует перестроить базу данных и / или приложение.
Какова цель NOLOCK
намеки? Почему вы хотите обновить переменную таблицы грязными данными?
Намек NoLock почти ни в коем случае не увеличивает производительность сервера. Однако подсказка (NOLOCK) может использоваться безопасно, когда гарантированно или нет, что доступ к данным либо не будет изменяться в этот момент (например, после публикации части данных в БД она останется неизменной, либо вы знаете, что текущая часть данных не будет изменена другими пользователями) или, если нет необходимости брать старые данные или новые данные (например, некоторые данные часто изменяются и в любом случае нет необходимости сохранять именно последнюю). В противном случае вы можете получить расхождение данных в разных таблицах...