如何减少 select 语句的死锁

How to reduce deadlocks on select statement

有人知道如何解决这个问题吗?当我跟踪错误时。我看到一段代码调用这个查询。

SqlException : Transaction (Process ID 57) was deadlocked on lock

SELECT A.[CallID]
FROM dbo.[Calls] A WITH(NOLOCK)
INNER JOIN [dbo].[Issues] B WITH(NOLOCK) ON A.[CallID] = B.[CallID]
WHERE A.[AddedByUserID] = @UserID
  AND A.[EndTime] IS NULL
  AND DATEDIFF(d,A.AddedOn,GETDATE()) <= 1

我对(NOLOCK)的理解是防止死锁。但是为什么我会遇到这个错误?

您可以尝试打开 read committed snapshot 以便 select 不应该使用任何锁并获得一致的读取。