我有一个包含大约 500 万行的数据库。我正在尝试为数据库生成 XML 字符串并将它们推送到服务。该服务支持一次获取 1000 条记录,而不是一次执行此操作。目前,这很慢,每 1000 条记录需要 10 秒以上的时间(包括写回数据库和上传到服务)。
我试图让以下代码工作,但失败了......我尝试它时崩溃了。有任何想法吗?
var data = <insert LINQ query here>
int take = 1000
int left = data.Count();
Parallel.For(0, left / 1000, i =>
{
data.Skip(i*1000).Take(1000)...
//Generate XML here.
//Write to service here...
//Mark items in database as generated.
});
//Get companies which are still marked as not generated.
//Create XML.
//Write to Service.
我收到一个崩溃,告诉我索引超出范围。如果left
是 500 万,则循环中的数字应该不超过 5000。如果我再乘以 1000,我应该不会超过 500 万。我不介意它是否工作了一点,然后失败了,但它只是在 SQL 查询之后失败了!