如何改进这个嵌套循环?

本文关键字:嵌套循环 何改进 | 更新日期: 2023-09-27 18:17:59

我试图使用。net实体框架在两个帐户表中做记录的模糊匹配。我写了一些这样的代码,但是它的性能很差,比如1分钟一条记录。

ARSalesforceEntities arsf = new ARSalesforceEntities();   //dbcontext
Salesforce_FFEntities ffsf = new Salesforce_FFEntities();  //dbcontext
var araccounts = arsf.Accounts;           //dbset contains 400000 records
var ffaccounts = ffsf.Accounts;           //dbset contains 6000 records
IDCONV byName = new IDCONV();  
IDCONV byAddress = new IDCONV();
foreach (var ffaccount in ffaccounts)
{
    Console.WriteLine(++count);
    foreach (var araccount in araccounts)//this line goes every slow like 1 min
    { 

基本上,我是比较两个表中的记录与复杂的逻辑。我怎样才能极大地提高代码的性能?谢谢你

如何改进这个嵌套循环?

这一行:

var ffaccounts = ffsf.Accounts;

才是最让你难受的。你基本上是将IQueryable分配给一个变量,当在你的内部循环中访问时,每次都重新查询数据库。我想只要在末尾添加ToList()就能大大提高性能:

var ffaccounts = ffsf.Accounts.ToList();

当然,这是假设可以将6000行具体化到内存中。

如果不是,那么您可能要考虑在SQL中编写逻辑并在DB中完成所有工作…