2011-09-23 12 views
9

Tengo una tabla (Mi Sql) con 2 millones de registros y una Lista con 100 registros. Tengo List Excepto la expresión lamda para encontrar todas las URL que están en la lista pero no en la tabla.Lista y Problema de rendimiento de Linq a Sql

Ahora, el problema es que se está tardando alrededor de 5 minutos. Estoy trabajando en un potente VPS, código y base de datos en el mismo servidor.

Por favor sugiérame Todas las formas posibles de aumentar el rendimiento de linq a sql y linq a la entidad.

Mi Código Is`return

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

¿Dónde está la lista URLs que contienen 100 URLs y postedurllists es una tabla que contiene récord de 2 millones de personas. Gracias

+1

20L? ¿Te refieres a 20 "lakh", es decir, 2 millones? (Vale la pena tener en cuenta que "lakh" no se usa ampliamente fuera de India y los países de esa región). Muestre su código: es muy difícil ayudar a diagnosticar problemas simplemente a partir de una * descripción * del código en lugar del código en sí. –

+0

@Jon Gracias por su sugerencia. –

Respuesta

3

Actualmente estás extrayendo todas las de las URL de la base de datos. Esa no es una buena idea. En su lugar, sugeriría tirando de la intersección de la base de datos mediante el paso de manera efectiva su lista Urls en la base de datos, y haciendo un Excepto en base a los resultados:

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

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

Muchas gracias por su respuesta –

+0

Funciona muy bien, thnx –