如何改进这个嵌套循环?
本文关键字:嵌套循环 何改进 | 更新日期: 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中完成所有工作…