我编写了一个类,用于将大量数据上传到数据库中。 foreach循环似乎很慢,每次循环迭代大约需要16ms。我可以通过哪些方式提高此操作的速度?我有41,000行要添加到已经有大约162,000行的表中。每次调用该方法时,每行41k行需要10分钟。我正在从正在解析的数千个文件的大量集合中检索此数据,因此您可以想象这将是每个文件大约4万行数据乘以数千个文件。每次10分钟,我将等待不合理的长时间上传。
我的理论是,Convert.ToInt32()可能代价高昂,但这真的是导致我迟钝的原因吗?这里的问题在我的循环中。
class Uploader
{
public void beginUpload(List<WaterData> data)
{
using (var db = new RTIDBContext())
{
var waterData = db.Set<water_data>();
foreach (var day in data)
{
var rowdata = new water_data { measurment_date = day.date.ToString(), cond = Convert.ToInt32(day.waterConductivity), temp = null };
waterData.Add(rowdata);
}
db.SaveChanges();
}
}
}
另外,这是我的WaterData类:
class WaterData
{
public DateTime date { get; set; }
public double waterConductivity { get; set; }
}