हां, जब आप user_id
जैसे अनइंडेक्स किए गए कॉलम पर एक शर्त रखते हैं, तो आप तालिका की सभी पंक्तियों को लॉक कर रहे होते हैं ।
ताले सभी "जांच की गई" पंक्तियों पर लागू होते हैं। आपकी स्थिति WHERE user_id = <user_id>
सभी की जांच करनी चाहिए तालिका में पंक्तियाँ, और उनका एक-एक करके परीक्षण करके देखें कि क्या वे <user_id>
के मान से मेल खाते हैं ।
दोनों प्रश्न पंक्तियों के पूरे सेट की जांच कर रहे हैं, भले ही वे <user_id>
के विभिन्न विशिष्ट मानों की खोज कर रहे हों , इसलिए वे विरोध करते हैं।
यदि आपके पास user_id
. पर एक अनुक्रमणिका थी कॉलम, फिर MySQL उस इंडेक्स का उपयोग पहले मेल खाने वाली पंक्तियों को खोजने के लिए करेगा, फिर केवल मिलान करने वाली पंक्तियाँ जांची गई पंक्तियाँ बन जाएँगी, और इसलिए लॉक हो जाएँगी।
इसका लेनदेन अलगाव स्तर से कोई लेना-देना नहीं है। इस प्रकार के ताले सभी लेन-देन अलगाव स्तरों में होते हैं।