2011-09-23 115 views
9

我有一个表(My Sql)有2百万条记录和一个有100条记录的列表。我有List除了lamda表达式,用于查找列表中但不在表中的所有Url。列表和Linq SQL性能问题

现在的问题是,它需要大约5分钟的时间。我在强大的VPS和代码和数据库在同一台服务器上工作。

请建议我所有可能的方式来增加linq到sql和linq到实体的性能。

我的代码Is`return

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

凡提供网址,是清单包含100个URL和postedurllists是包含2百万的记录表。 谢谢

+1

20L?你的意思是20“10kh”,即200万? (值得注意的是,“lakh”在印度和该地区的国家之外并未广泛使用。)请显示您的代码 - 仅从代码的*描述*而非代码本身帮助诊断问题非常困难。 –

+0

@Jon感谢您的建议。 –

回答

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 –