SqlServr 批量数据insert

来源:百度知道 编辑:UC知道 时间:2024/06/19 01:45:09
大概有50000条左右记录吧,两种方式:
用程序循环插入
foreach(myclass temp in list<myclass>)
{
helper.execnon("insert into table()values");//大概看个意思
}
一条语句插入:
StringBuilder sql = new StringBuilder();
sql.Append("insert into table() ");
foreach(myclass temp in list<myclass>)
{
sql.Append("select '"+temp.a"'")//大概这个意思
sql.Append("union all")
}
helper.execnon(sql.toString());

经过测试,后者好像效率高些,但是同事说大量类似操作sql性能会有所降低,但我个人觉得还是后者好些,不过dba的意见应该也没错,有没有处理过类似问题的人给个结论?
大数据频繁插入在最后插入时优化的效果还是很杯水车薪的
最后我们还是缓存到独立数据库再用sql代理服务按时自动分批处理效果比较好

后者效率是高但是数据量大了很占用内存,你相当于是把数据先写入内存再一次性插入数据库,虽然数据库执行速度快,但是内存应该会爆掉吧。。。
如果使用的是c# 推荐使用sqlbulkercopy类,专门处理大数据量的

肯定是后一个 效率高吧 不停的open close 那怎么行