下面的查询是否有效,或者我是否使用显式事务处理并结束?
是的我知道未提交读取的危险
SET TRANSACTION isolation level READ uncommitted
SELECT TOP 100 tblguilds.guild_id,
tblguilds.guildname,
tblguilds.leaderuserid,
tblusersprofile.username
FROM tblguilds
LEFT JOIN tblusersprofile
ON tblusersprofile.userid = tblguilds.leaderuserid
WHERE tblguilds.guild_id NOT IN (SELECT guildcode
FROM tblguildapplied
WHERE userid = 1)
ORDER BY Newid()
答案 0 :(得分:2)
是的,这将有效但请注意它将在整个会话中生效。这意味着在该选择之后执行的任何SQL都将使用该隔离级别。如果要将其限制为select stmt中的某些表,请考虑使用NOLOCK提示
在此处查看更多信息: WITH (NOLOCK) vs SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Begin事务和提交(没有END事务)仅适用于insert / updates / deletes
在旁注中我会修改该查询以使用左外连接而不是NOT IN来提高性能。