I forbindelse med låsning er tabeller og deres relaterede indekser separate enheder. Til tider sker dead locking mellem en tabel og dens indeks i stedet for mellem to separate tabeller.
Problemet er mest sandsynligt, når en lås er anskaffet på et indeks, og derefter en anden lås er erhvervet på den relaterede tabel (dvs. bjælke) for at foretage dataopslag. Under indsættelsen vil dette ske i modsat rækkefølge. Først låses og opdateres tabellen (dvs. bjælken), derefter låses indekser.
select foo
from bar
where @someId = 0 OR SomeId = @someId
Har du/kan du tilføje et dækkende indeks (for at hjælpe med valget), der indeholder både SomeId og foo ? På denne måde undgår du opslaget helt og stopper problemet i at opstå.
Kan du sende forespørgselsplanerne i stedet for deadlock frames?