索引导致的 SQL 死锁

Edw*_*win 5 sql-server deadlock locking

我在插入和选择之间遇到死锁问题

连接 A:

  1. 在表 MyTable 中插入一条记录(X 锁定记录)
  2. 更新非聚集索引 MyTable_Index(在索引条目上请求 X 锁)

连接 B:

  1. 使用 MyTable_Index 定位具有特定 Destination(MyTable 的列)的记录(索引条目上的 S 锁)
  2. 通过索引返回 (SELECT) MyTable 记录。(这是一个随后更新记录的子查询)(请求 S 锁定记录)

因此,当 A 插入(步骤 1)并且 B 使用索引(步骤 1)时,似乎发生了死锁。连接 A 和 B 都使用 ROWLOCK 提示。

有没有办法为连接 B 指定 MyTable_Index 不应该被锁定,就像一个表的 NOLOCK,但现在是索引?

或者其他一些聪明的技巧(除了删除索引或使用聚集索引)?

期待一些聪明的解决方案:-)