I samband med låsning är tabeller och deras relaterade index separata enheter. Ibland sker dödlåsning mellan en tabell och dess index, snarare än mellan två separata tabeller.
Problemet är mest troligt när ett lås hämtas på ett index och sedan ett annat lås erhålls på den relaterade tabellen (d.v.s. stapeln) för att göra datasökningen. Under insättningen kommer detta att ske i motsatt ordning. Först låses tabellen (d.v.s. stapeln) och uppdateras, sedan låses indexen.
select foo
from bar
where @someId = 0 OR SomeId = @someId
Har du/kan du lägga till ett täckande index (för att hjälpa till med valet) som innehåller både SomeId och foo ? På så sätt undviker du uppslagningen helt och hållet och stoppar problemet från att uppstå.
Kan du lägga upp frågeplanerna istället för låsta ramar?