असल में मुझे यकीन नहीं है कि शीर्षक सटीक रूप से प्रश्न का वर्णन करता है, लेकिन मुझे उम्मीद है कि यह काफी करीब है।SQLDataReader वास्तव में बड़ी क्वेरी कैसे संभालता है?
मेरे पास कुछ कोड है जो डेटाबेस तालिका से एक चयन करता है जो मुझे पता है जिसके परिणामस्वरूप लगभग 1.5 मिलियन पंक्तियां चुनी जा रही हैं। प्रत्येक पंक्ति में डेटा बड़ा नहीं है - शायद प्रति पंक्ति 20 बाइट्स। लेकिन यह अभी भी 30 एमबी डेटा है। प्रत्येक पंक्ति में ग्राहक संख्या होती है, और मुझे प्रत्येक ग्राहक के साथ कुछ करने की आवश्यकता होती है।
SqlConnection conn = new SqlConnection(connString);
SqlCommand command = new SqlCommand("SELECT ... my select goes here", conn);
using (conn)
{
conn.Open();
using (SqlDataReader reader = command.ExecuteReader())
{
while(reader.Read())
{
... process the customer number here
}
}
}
तो मैं सिर्फ सभी का चयन करें द्वारा लौटाए गए ग्राहकों से अधिक पुनरावृति:
मेरे कोड की तरह कुछ लग रहा है।
मेरा प्रश्न है, क्या इसका परिणाम डेटाबेस के एकाधिक पढ़ने में आता है, या सिर्फ एक? मुझे लगता है कि नेटवर्क बफर 30 एमबी डेटा रखने के लिए पर्याप्त नहीं हैं, तो .NET क्या करता है? एसक्यूएल का परिणाम SQLDataReader के लिए कहीं भी एक पंक्ति से निकलने के लिए कहीं भी घिरा हुआ है() सूचक को आगे बढ़ाता है? या यह डेटाबेस पर वापस चला जाता है?
कारण मैं पूछ रहा हूं कि कोड के भाग "... यहां ग्राहक संख्या को संसाधित करें" कुछ समय ले सकता है, इसलिए 1.5 मिलियन ग्राहकों के लिए कोड (ऊपर लूप ऊपर) में कई घंटे लगेंगे पूर्ण। हालांकि यह हो रहा है, क्या मुझे डेटाबेस पर मेरे पीछे अवरुद्ध करने वाले अन्य लोगों के बारे में चिंता करने की ज़रूरत है, या क्या मैं इस ज्ञान में सुरक्षित हूं कि मैंने डेटाबेस से अपना एक चयन किया है और मैं फिर से वापस नहीं जा रहा हूं?
[कैसे डेटा रीडर काम करता है] (http://stackoverflow.com/questions/1383920/how-datareader-works) – Steve
तो आपके पास 2-प्रश्न का प्रश्न है? => डेटरेडर कैसे काम करता है और यह मेरी क्वेरी और अन्य उपयोगकर्ताओं को डीबी – Schuere
पर कैसे प्रभावित करेगा, इस तरह की बड़ी मात्राओं से निपटने के दौरान कभी-कभी आपके कोड के तरीके को बदलने के लिए समझदारी होती है। ग्राहकों पर प्रसंस्करण क्या है? क्या किसी भी ग्राहक को लौटने से पहले अन्य मानदंडों का उपयोग करके बाहर रखा जा सकता है? – HeXanon