sql >> Base de Datos >  >> RDS >> Sqlserver

Efecto de la sugerencia NOLOCK en declaraciones SELECT

1) , una selección con NOLOCK se completará más rápido que una selección normal.

2) , una selección con NOLOCK permitirá que otras consultas en la tabla afectada se completen más rápido que una selección normal.

¿Por qué sería esto?

NOLOCK normalmente (dependiendo de su motor de base de datos) significa darme sus datos, y no me importa en qué estado se encuentran, y no me molesto en mantenerlos quietos mientras los lee. Es a la vez más rápido, requiere menos recursos y es muy, muy peligroso.

Se le debe advertir que nunca realice una actualización o realice algo crítico para el sistema, o cuando se requiera una corrección absoluta utilizando datos que se originaron en un NOLOCK leer. Es absolutamente posible que estos datos contengan filas que se eliminaron durante la ejecución de la consulta o que se eliminaron en otras sesiones que aún no se han finalizado. Es posible que estos datos incluyan filas que hayan sido parcialmente actualizadas. Es posible que estos datos contengan registros que violen las restricciones de clave externa. Es posible que estos datos excluyan filas que se han agregado a la tabla pero que aún no se han confirmado.

Realmente no tiene forma de saber cuál es el estado de los datos.

Si está tratando de obtener cosas como un recuento de filas u otros datos de resumen en los que es aceptable cierto margen de error, entonces NOLOCK es una buena manera de aumentar el rendimiento de estas consultas y evitar que afecten negativamente el rendimiento de la base de datos.

Utilice siempre el NOLOCK sugiera con mucha precaución y trate cualquier dato que devuelva de manera sospechosa.