以下针对sql Server的sql查询之间有什么区别?
可能重复:以下针对sql Server的sql查询之间有什么区别?,sql,sql-server,Sql,Sql Server,可能重复: 这些sql查询之间有什么区别 SQL查询: SELECT U.ID_USER AS ID, U.USERNAME AS NICK, U.PASSWORD AS PASS FROM T_USERS AS U WITH (NOLOCK) SELECT U.ID_USER AS ID, U.USERNAME AS NICK, U.PASSWORD AS PASS FROM T_USERS AS U SQL查询: SELECT U.ID_USER AS ID, U.USERNA
这些sql查询之间有什么区别
SELECT
U.ID_USER AS ID,
U.USERNAME AS NICK,
U.PASSWORD AS PASS
FROM T_USERS AS U WITH (NOLOCK)
SELECT
U.ID_USER AS ID,
U.USERNAME AS NICK,
U.PASSWORD AS PASS
FROM T_USERS AS U
SELECT
U.ID_USER AS ID,
U.USERNAME AS NICK,
U.PASSWORD AS PASS
FROM T_USERS AS U WITH (NOLOCK)
SELECT
U.ID_USER AS ID,
U.USERNAME AS NICK,
U.PASSWORD AS PASS
FROM T_USERS AS U
如果任何行正在进行修改或以独占方式锁定,则第二行(不带nolock的查询)将被阻止。它将永远不会读取尚未提交的数据,因为它将被更改数据的进程阻止。这是通常情况下,当你不想读取未被引用的数据时,准确度是最重要的。简短的回答:前者试图避免锁定行,因此可以读取正在更新的数据。长回答:谷歌“数据库锁定”和阅读;这是论文的主题。什么时候可以锁定?当我使用带有“NO LOCK”的查询时?NO LOCK意味着它不会被任何其他进程阻止,因为该进程不会尝试获取任何锁(正如您指定的nolock)。默认情况下,进程通常对表、页或行等资源使用共享锁。