Dalam konteks penguncian, tabel dan indeks terkaitnya adalah entitas yang terpisah. Terkadang, penguncian mati terjadi antara tabel dan indeksnya, bukan antara dua tabel terpisah.
Masalahnya kemungkinan besar ketika kunci diperoleh pada indeks dan kemudian kunci lain diperoleh pada tabel terkait (yaitu bar) untuk melakukan pencarian data. Selama penyisipan, ini akan terjadi dalam urutan yang berlawanan. Pertama, tabel (yaitu bar) dikunci dan diperbarui, kemudian indeks dikunci.
select foo
from bar
where @someId = 0 OR SomeId = @someId
Apakah Anda memiliki/dapatkah Anda menambahkan indeks penutup (untuk membantu memilih) yang berisi SomeId dan foo ? Dengan cara ini Anda akan menghindari pencarian sama sekali dan menghentikan masalah agar tidak terjadi.
Bisakah Anda memposting rencana kueri daripada bingkai kebuntuan?