2011-09-23 20 views
9

Ho una tabella (My Sql) con 2 milioni di record e una lista con 100 record. Ho una lista tranne l'espressione lamda per trovare tutti quegli Url che sono in List ma non in Table.Elenco e Linq To Sql Performance Numero

Ora il problema è che ci vuole molto tempo intorno ai 5 minuti. Sto lavorando in potenti VPS e codice e database nello stesso server.

Per favore suggerirmi Tutti i modi possibili per aumentare le prestazioni di linq su sql e linq su entità.

My Code Is`return

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

Dove Urls è list che contegono 100 URL e postedurllists è una tabella che contiene 2 milioni di record. Grazie

+1

20L? Intendi 20 "lakh", cioè 2 milioni? (Vale la pena essere consapevoli che "lakh" non è ampiamente utilizzato al di fuori dell'India e dei paesi in quella regione.) Si prega di mostrare il codice - è molto difficile aiutare a diagnosticare i problemi solo da una * descrizione * del codice invece del codice stesso. –

+0

@Jon Grazie per il suggerimento. –

risposta

3

Attualmente stai prelevando tutti gli degli URL dal database. Non è una buona idea. Invece, vorrei suggerire tirando la intersezione dal database facendo passare in modo efficace la vostra lista Urlsnel database e facendo un tranne che in base ai risultati:

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

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

Grazie mille per la risposta –

+0

Funziona alla grande, thnx –