क्या SingleOrDefault () क्वेरी दूरस्थ रूप से है? - सी #, एसक्यूएल-सर्वर, प्रदर्शन, इकाई-फ्रेमवर्क, लिनक

विभिन्न कंप्यूटरों वाले वातावरण पर विचार करेंविभिन्न स्थानों। इन कंप्यूटरों में हर 5 मिनट में सिंक करने के लिए एक विंडोज़ एप्लीकेशन चल रहा होता है और नए डेटा के लिए टाइमर की जाँच होती है। सूचना इंटरनेट कनेक्शन पर एक केंद्रीकृत स्थान पर समन्‍वयित है। क्लाइंट कंप्यूटर और केंद्रीकृत सर्वर दोनों पर डेटाबेस एक SQL सर्वर डेटाबेस है।

रिमोट में लिखने से पहले (केंद्रीकृत)सर्वर, SingleOrDefault () विधि का उपयोग यह जांचने के लिए किया जाता है कि एक ही ID वाला रिकॉर्ड दूरस्थ रूप से मौजूद है या नहीं। ग्राहक ने उपयोग किए गए इंटरनेट डेटा में वृद्धि की सूचना दी है। मैं सोच रहा हूँ कि क्या केंद्रीकृत डेटाबेस बहुत बड़ा हो गया है और सिंगलऑर्डेफ़ॉल्ट कनेक्शन पर संपूर्ण क्वेरी डेटा लौटाता है और क्वेरी क्लाइंट को करता है। क्या यह मामला हो सकता है? और एक वैकल्पिक समाधान क्या होगा जो एक ही काम नहीं करता है?

उत्तर:

जवाब के लिए 3 № 1

यदि आप उपयोग कर रहे हैं Queryable.SingleOrDefault तब इसे सर्वर पर संसाधित किया जाएगा (यदि आप डेटाबेस क्वेरी लॉग करते हैं तो आप इसका उपयोग देख सकते हैं top 2 में select1)।

हालांकि अगर आप उपयोग कर रहे हैं Enumerable.SingleOrDefault तब इसे (डेटाबेस) क्लाइंट पर संसाधित किया जाएगा।

से परिवर्तित करने से आपको बचने की आवश्यकता है IQuerable<T> सेवा मेरे IEnumerable<T> (जैसे, के उपयोग से AsEnumerable)।

यह पता लगाना कोड निरीक्षण के साथ या उत्पन्न SQL को देखकर किया जा सकता है।

1 top 2 का उपयोग एक से अधिक परिणाम का पता लगाने के लिए किया जाता है, जिसका उपयोग करते समय एक त्रुटि होती है SingleOrDefault


संबंधित सवाल
सबसे लोकप्रिय