W kontekście blokowania tabele i powiązane z nimi indeksy są oddzielnymi jednostkami. Czasami martwe blokowanie ma miejsce między tabelą a jej indeksem, a nie między dwoma oddzielnymi tabelami.
Problem jest najbardziej prawdopodobny, gdy blokada jest nałożona na indeks, a następnie na powiązanej tabeli (tj. na pasku) zostaje nałożona kolejna blokada w celu wyszukiwania danych. Podczas wstawiania nastąpi to w odwrotnej kolejności. Najpierw tabela (tj. słupek) jest blokowana i aktualizowana, a następnie indeksy są blokowane.
select foo
from bar
where @someId = 0 OR SomeId = @someId
Czy masz/możesz dodać indeks pokrywający (aby pomóc w wyborze), który zawiera zarówno SomeId, jak i foo ? W ten sposób całkowicie unikniesz wyszukiwania i zapobiegniesz występowaniu problemu.
Czy możesz opublikować plany zapytań zamiast zakleszczonych ramek?