0

下面的这个查询是否有效,或者我是否使用了明确的事务存在和结束?

是的,我知道未提交的读取的危险

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() 
4

1 回答 1

2

是的,这将起作用,但请注意它将在整个会话期间生效。这意味着您在该选择之后执行的任何 SQL 都将使用该隔离级别。如果您想将其限制为 select stmt 中的某些表,请考虑使用 NOLOCK 提示

在这里查看更多: WITH (NOLOCK) vs SET TRANSACTION ISOLATION LEVEL READ UNCOMMITTED

Begin 事务和提交(没有 END 事务)仅适用于插入/更新/删除

在旁注中,我会修改该查询以使用左外连接而不是 NOT IN 来提高性能。

于 2016-07-27T00:32:37.797 回答