लॉकिंग के संदर्भ में, टेबल और उनके संबंधित इंडेक्स अलग-अलग इकाइयाँ हैं। कभी-कभी, दो अलग-अलग तालिकाओं के बजाय एक टेबल और उसके इंडेक्स के बीच डेड लॉकिंग होती है।
समस्या सबसे अधिक तब होती है जब किसी इंडेक्स पर एक लॉक लगाया जाता है और फिर डेटा लुकअप करने के लिए संबंधित टेबल (यानी बार) पर एक और लॉक लगाया जाता है। डालने के दौरान, यह विपरीत क्रम में होगा। सबसे पहले, टेबल (यानी बार) को लॉक और अपडेट किया जाता है, फिर इंडेक्स को लॉक किया जाता है।
select foo
from bar
where @someId = 0 OR SomeId = @someId
क्या आपके पास एक कवरिंग इंडेक्स (चयन में सहायता के लिए) जोड़ सकता है जिसमें SomeId और foo दोनों शामिल हैं? इस तरह आप लुकअप से पूरी तरह बचेंगे और समस्या को होने से रोकेंगे।
क्या आप डेडलॉक फ़्रेम के बजाय क्वेरी प्लान पोस्ट कर सकते हैं?