下面的查询是否有效,或者我是否使用了显式事务being和end?
是的,我知道读取未提交的危险
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()
是的,这将起作用,但请注意,它将对整个会话有效。这意味着在选择之后执行的任何SQL都将使用该隔离级别。如果您想将其限制在select stmt中的某些表中,请考虑使用NOLOCK提示
点击此处查看更多信息:WITH(NOLOCK)vs SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED
Begin事务和提交(没有END事务)仅适用于插入/更新/删除
顺便说一句,我会修改该查询,使用左外部联接而不是NOT IN来提高性能。