In de context van vergrendeling zijn tabellen en hun gerelateerde indexen afzonderlijke entiteiten. Soms vindt dead locking plaats tussen een tabel en zijn index, in plaats van tussen twee afzonderlijke tabellen.
Het probleem is het meest waarschijnlijk wanneer een slot wordt verkregen op een index en vervolgens een ander slot wordt verkregen in de gerelateerde tabel (d.w.z. balk) om de gegevens op te zoeken. Tijdens het invoegen gebeurt dit in omgekeerde volgorde. Eerst wordt de tabel (d.w.z. de balk) vergrendeld en bijgewerkt, daarna worden de indexen vergrendeld.
select foo
from bar
where @someId = 0 OR SomeId = @someId
Heb je een dekkingsindex (om te helpen bij het selecteren) die zowel de SomeId als foo bevat? Op deze manier vermijdt u het opzoeken helemaal en voorkomt u dat het probleem optreedt.
Kun je de queryplannen posten in plaats van deadlockframes?