С (nolock) или (nolock) - есть ли разница?
Все основано на предположении, что with(nolock) полностью подходит для ситуации. Уже есть множество вопросов, обсуждающих, использовать или нет (nolock).
Я посмотрел вокруг и не смог найти, есть ли реальная разница между использованием with(nolock)
:
select customer, zipcode from customers c with(nolock)
или просто (nolock)
:
select customer, zipcode from customers c (nolock)
Есть ли функциональная разница между ними? Стилистические?
Один старше другого и имеет шанс быть устаревшим?
4 ответа
Там нет функциональной разницы, но в конечном итоге синтаксис без WITH
не будет работать. Это устарело:
select customer, zipcode from customers c (nolock)
Таким образом, вы должны использовать этот формат:
select customer, zipcode from customers c with (nolock)
Не используя WITH
ключевое слово для табличных подсказок устарело, по крайней мере, с SQL Server 2008. Найдите фразу в следующей теме Specifying table hints without using the WITH keyword.
:
http://msdn.microsoft.com/en-us/library/ms143729%28SQL.100%29.aspx
(Обсуждение о том, следует ли вам использовать nolock
У всех, конечно, отдельные. Я писал о них здесь.)
Хотя мы не видим разницы между (nolock) и с (nolock)... с (nolock) не будет работать в версии SQL Server 2000.
И я также заметил, что когда вы пытаетесь получить данные со связанных серверов, просто "(nolock)" не будет работать, тогда как вы должны использовать "с (nolock)".
-- this will not work
select * from server1.DB1.dbo.table1 (nolock)
-- this will work
select * from server1.DB1.dbo.table1 with (nolock)
Это действительно зависит от того, на какой версии SQL Server вы работаете.
Изучите последнюю документацию для таблиц SQL Server 2012, пропускающих подсказки WITH
является устаревшей функцией. Так что пока from customers c (nolock)
вероятно будет работать; вы действительно должны использовать from customers c WITH (nolock)
Обратите внимание, что это отличается от from customers nolock
; где nolock будет служить псевдонимом таблицы.
Функционально; они кажутся одинаковыми.
Я попробовал это для результата строки данных 170000+, однако я не увидел никакой разницы в плане выполнения запроса. Оба работают одинаково.