sql - que - con(nolock) o(nolock)-¿Hay alguna diferencia?
with nolock inner join (4)
Todo se basa en la suposición de que con (nolock) es totalmente apropiado para la situación. Ya hay muchas preguntas debatiendo si se usa o no con (nolock).
He mirado alrededor y no he podido encontrar si hay una diferencia real entre usar with(nolock)
:
select customer, zipcode from customers c with(nolock)
o simplemente (nolock)
:
select customer, zipcode from customers c (nolock)
¿Hay una diferencia funcional entre los dos? ¿Estilístico?
¿Es uno más viejo que el otro y tiene la posibilidad de ser desaprobado?
Aunque no encontramos diferencia entre (nolock) y con (nolock) ... con (nolock) no funcionaría en la versión de SQL Server 2000.
Y también noté que cuando intentas extraer datos de los servidores vinculados, simplemente ''(nolock)'' no funcionará, mientras que deberías usar ''with (nolock)''.
-- this will not work
select * from server1.DB1.dbo.table1 (nolock)
-- this will work
select * from server1.DB1.dbo.table1 with (nolock)
Intenté esto para obtener 170000+ resultados de filas de datos, sin embargo, no vi ninguna diferencia a través del plan de ejecución de consultas. Ambos funcionan de la misma manera.
No hay diferencia funcional, pero finalmente la sintaxis sin WITH
no funcionará. Esto ha sido desaprobado:
select customer, zipcode from customers c (nolock)
Entonces deberías estar usando este formato:
select customer, zipcode from customers c with (nolock)
No se ha dejado de utilizar la palabra clave WITH
para sugerencias de tabla desde al menos SQL Server 2008. Busque en el siguiente tema la frase Specifying table hints without using the WITH keyword.
:
http://msdn.microsoft.com/en-us/library/ms143729%28SQL.100%29.aspx
(Por supuesto, las discusiones sobre si deberías estar usando nolock
, por supuesto, están separadas. He escrito sobre ellas aquí ).
Realmente depende de la versión de SQL Server en la que se encuentre.
Ver la última documentación para las msdn.microsoft.com/en-us/library/ms187373.aspx SQL Server 2012 al omitir WITH
es una característica en desuso. Por lo tanto, aunque los from customers c (nolock)
probablemente funcionen; deberías estar realmente usando from customers c WITH (nolock)
Tenga en cuenta que esto es diferente from customers nolock
; donde nolock serviría como el alias de la tabla.
Funcionalmente ellos parecen ser lo mismo.