首先自然是遍历DataTable逐条数据插入
结果如下:Use SqlServer Insert;RecordCount:40000;BatchSize:1;Time:62329;
可以根据批量大小拼接sql减少服务器的往返次数,我们测试下在批处理10,20,50,100,200下的插入时间
结果如下:
Use SqlServer Batch Insert;RecordCount:40000;BatchSize:10;Time:30010;
Use SqlServer Batch Insert;RecordCount:40000;BatchSize:20;Time:21858;
Use SqlServer Batch Insert;RecordCount:40000;BatchSize:50;Time:17564;
Use SqlServer Batch Insert;RecordCount:40000;BatchSize:100;Time:19869;
Use SqlServer Batch Insert;RecordCount:40000;BatchSize:200;Time:17936;
插入时间为前者的28% ~ 48%看来减少服务器的往返次数还是有效果的,批量50条基本是平衡点。
全文链接:
.NET批量大数据插入性能分析及比较(2.普通插入与拼接sql批量插入)
.NET批量大数据插入性能分析及比较(4.使用DataAdapter批量插入)