मुझे पूरा यकीन था कि आपको क्वेरी में NOLOCK
प्रत्येक के लिए निर्दिष्ट करने की आवश्यकता है JOIN
। लेकिन मेरा अनुभव SQL सर्वर 2005 तक सीमित था।
जब मैंने पुष्टि करने के लिए सिर्फ MSDN को देखा, तो मुझे कुछ भी निश्चित नहीं मिला। नीचे दिए गए कथनों से मुझे लगता है, कि 2008 के लिए, ऊपर दिए गए आपके दो कथन समतुल्य हैं, हालांकि 2005 के लिए ऐसा नहीं है:
[SQL Server 2008 R2]
सभी लॉक संकेत उन सभी तालिकाओं और विचारों के लिए प्रचारित किए जाते हैं , जिन्हें क्वेरी योजना द्वारा एक्सेस किया जाता है , जिसमें एक दृश्य में संदर्भित तालिकाएं और दृश्य शामिल हैं। साथ ही, SQL सर्वर संगत लॉक संगतता जाँच करता है।
[SQL सर्वर 2005]
SQL सर्वर 2005 में, सभी लॉक संकेत सभी तालिकाओं और विचारों के लिए प्रचारित किए जाते हैं जिन्हें एक दृश्य में संदर्भित किया जाता है। साथ ही, SQL सर्वर संगत लॉक संगतता जाँच करता है।
इसके अतिरिक्त, ध्यान दें - और यह 2005 और 2008 दोनों पर लागू होता है:
यदि तालिका क्वेरी योजना द्वारा एक्सेस नहीं की गई है, तो तालिका के संकेतों को अनदेखा कर दिया जाता है। इसका कारण यह हो सकता है कि ऑप्टिमाइज़र ने तालिका का उपयोग न करने का विकल्प चुना है, या क्योंकि इसके बजाय अनुक्रमित दृश्य एक्सेस किया गया है। उत्तरार्द्ध मामले में, एक अनुक्रमित दृश्य तक पहुंच को OPTION (EXPAND VIEWS)
क्वेरी संकेत का उपयोग करके रोका जा सकता है ।