मैं READPAST
हमारे आवेदन के वित्तीय उपतंत्र में संसाधन लॉकिंग को कम करने के संकेत का उपयोग कर रहा हूं ।
यह जाने के लिए एक अच्छा तरीका लग रहा था क्योंकि वित्तीय लेनदेन रिकॉर्ड केवल कभी जोड़े जाते हैं, कभी अद्यतन या हटाए नहीं जाते। कभी-कभी छोड़ दी जाने वाली एकमात्र पंक्तियाँ एक लेन-देन के अंदर डाली गई बिल्कुल नई पंक्तियाँ होती हैं; वे प्रभावी रूप से बाहरी दुनिया में मौजूद नहीं हैं जब तक कि लेनदेन प्रतिबद्ध नहीं है।
हालाँकि, मैंने उन प्रश्नों पर बदतर प्रदर्शन देखा, जो अनुक्रमित विचारों का उपयोग करते हैं जो मैंने READPAST
संकेत दिया था । क्वेरी योजनाओं की तुलना करते हुए, यह संकेत के साथ जैसा दिखता है, क्वेरी ऑप्टिमाइज़र अनुक्रमित दृश्य का उपयोग नहीं करने के लिए चुनता है और इसके बजाय इसे एक नियमित दृश्य की तरह व्यवहार करने के लिए वापस आ जाता है।
मुझे यकीन नहीं है कि ऐसा क्यों होगा; मैं कल्पना करता हूं कि अनुक्रमित विचार किसी भी अन्य सूचकांक की तरह होंगे कि संचालन के दौरान चाबियाँ लॉक की जा सकती हैं और जोड़ना READPAST
इसी तरह काम करेगा।
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa WITH (READPAST)
WHERE isa.TotalOwedAmount = 0.0
SELECT TOP 1 isa.InvoiceId
FROM Financial_InvoiceSummaryAmounts isa
WHERE isa.TotalOwedAmount = 0.0
एक NOEXPAND
संकेत जोड़ने के रूप में अच्छी तरह से काम करने लगता है, लेकिन मैं संभवतः इस बारे में अधिक जानने में दिलचस्पी रखता हूं READPAST
कि क्वेरी ऑप्टिमाइज़र को पहली जगह में (पूर्ण उत्तर के भाग के रूप में) उस विकल्प को बनाने के लिए क्यों ।