2011-09-23 11 views
9

मेरे पास 2 लाख रिकॉर्ड और 100 रिकॉर्ड्स वाली एक सूची के साथ एक टेबल (मेरा एसक्यूएल) है। मेरे पास सूची में मौजूद सभी यूआरएल खोजने के लिए लैम्डा अभिव्यक्ति को छोड़कर सूची है लेकिन तालिका में नहीं है।सूची और लिंक करने के लिए एसक्यूएल प्रदर्शन अंक

अब समस्या यह है कि इसमें लगभग 5 मिनट लगते हैं। मैं एक ही सर्वर में शक्तिशाली वीपीएस और कोड और डेटाबेस में काम कर रहा हूं।

कृपया मुझे linq के प्रदर्शन को एसक्यूएल और linq में इकाई को बढ़ाने के लिए सभी संभव तरीका सुझाएं।

मेरे कोड Is`return

Urls.Except(DbContext.postedurllists.Select(crawl => crawl.PostedUrl).ToList()).ToList();` 

कहाँ URL की सूची बनाएं जो 100 यूआरएल और postedurllists होते है एक मेज है कि 2 लाखों रिकॉर्ड होता है। धन्यवाद

+1

20L? क्या आपका मतलब 20 "लाख" है, यानी 2 मिलियन? (यह जानना उचित है कि "लाख" का उपयोग उस क्षेत्र के भारत और देशों के बाहर व्यापक रूप से नहीं किया जाता है।) कृपया अपना कोड दिखाएं - कोड के बजाय कोड के * विवरण * से समस्याओं का निदान करने में सहायता करना बहुत मुश्किल है। –

+0

@ जोन आपके सुझाव के लिए धन्यवाद। –

उत्तर

3

आप वर्तमान में डेटाबेस से URL के सभी खींच रहे हैं। यह एक अच्छा विचार नहीं है। इसके बजाय, मैं प्रभावी रूप से डेटाबेस में अपने Urls सूची गुजर, और एक परिणाम के आधार पर सिवाय करके डेटाबेस से चौराहे खींच सुझाव है:

var commonUrls = DbContext.postedurllists 
          .Select(c => c.PostedUrl) 
          .Where(url => Urls.Contains(url)) 
          .ToList(); 

var separateUrls = Urls.Except(commonUrls); 
+0

धन्यवाद आपके लिए बहुत कुछ जवाब –

+0

महान काम करता है, thnx –