我有 2 个 SQL Server 数据库,托管在两个不同的服务器上。我需要从第一个数据库中提取数据。这将是一个整数列表。然后我需要将此列表与第二个数据库中多个表中的数据进行比较。根据某些情况,我需要在第二个数据库中更新或插入一些记录。
我的解决方案:(使用 LINQ to Entities 的 WCF 服务/实体框架)
- 从 1st db 获取整数列表,不到一秒就得到 20,942 条记录
- 我使用以下查询使用整数列表与第二个数据库中的表进行比较:
List<int> pastDueAccts; //Assuming this is the list from Step#1
var matchedAccts = from acct in context.AmAccounts
where pastDueAccts.Contains(acct.ARNumber)
select acct;
上面的查询花费了很长时间,以至于它给出了超时错误。即使 AmAccount 表只有约 400 条记录。
- 获得这些matchedAccts 后,我需要在第二个数据库的单独表中更新或插入记录。
有人可以帮助我,我怎样才能更有效地执行第 2 步?我认为 Contains 功能使它变慢。我也尝试了蛮力,通过放置一个 foreach 循环,我一次提取一条记录并进行比较。仍然需要太长时间并给出超时错误。数据库服务器显示只有 30% 的内存已被使用。