当前位置:编程学习 > C#/ASP.NET >>

同一条insert语句执行多次怎么样能提高效率?

同一条语句,只是每次传入不同的数据。之前别人教我用带参数的SQL语句,然后用.Prepare()方法,把语句先预编译,再执行就很快了,可是实际在用却发现,比用不带参数的insert语句一次一次插入也快不到哪里去,插入600条数据大概6,7秒这样(我自己都汗了)。
我也想过用事务,就是用StringBuilder,把所有insert语句都拼起来,一次执行,时间最快可以有0.9秒。但是如果数据很多,有10万条呢,一个StringBuilder能存得下那么多字符吗? --------------------编程问答-------------------- http://www.cnblogs.com/chenxizhang/archive/2008/11/11/1331060.html

我现在都是构造和数据库表结构一样的table 然后整个table插进去 --------------------编程问答-------------------- 把所有的insert sql拼成一条sql,执行一次。 --------------------编程问答-------------------- 对滴,直接全部读到datatable,然后一次性强行插入! --------------------编程问答-------------------- 插入的数据有什么样的规律啊
 一次要插这么多?
--------------------编程问答-------------------- 几百条记录要插那么久 

吓  --------------------编程问答-------------------- 数据量很大的话用SqlBulkCopy或者把数据写进文件用BULK INSERT或调用bcp... --------------------编程问答--------------------
引用 4 楼 aspwebchh 的回复:
插入的数据有什么样的规律啊
 一次要插这么多?

规律是没有的,好比说我一次性把整个学校的人名都插入数据表一样。其实我只是考虑性能问题,实际上不可能有10万条那么多。 --------------------编程问答-------------------- 数据量大的话要考虑分批导入 因为在导入之前可能要检查数据 别说服务器你的机子就有可能承受不了 --------------------编程问答-------------------- 批量插入数据要平衡一下,不能一条一条执行,也不要一次将10多万条一起执行。

一条一条执行的话,网络往返开销和SQL语句准备开销重复太多了。

一次10多万条执行的话,SQL Server需要一次为你的事物保存大量日志,另外,出现锁冲突的可能性加大(如果有并发 SELECT语句)。

建议调整到一个合理范围内,例如:几十K长度的SQL语句等,可以多做测试看看效果。

另外,性能方面也不要追求尽可能快,而是基本上符合自己的性能要求即可。
--------------------编程问答-------------------- 用事务进行处理.StringBuilder 的拼接是很迅速的. 用事务拼接Insert 语句. 或者你用储存过程.也可以.把Datatable 提交过去. 没有用过这种方法写过.也不清楚那一种方法快点.
--------------------编程问答-------------------- SqlConnection.open()
for()
{
  insert 
}
SqlConnection.Close()

没有比这个再快的了吧 --------------------编程问答--------------------
引用楼主 cglin7 的回复:
我也想过用事务,就是用StringBuilder,把所有insert语句都拼起来,一次执行,时间最快可以有0.9秒。但是如果数据很多,有10万条呢,一个StringBuilder能存得下那么多字符吗?


100条拼成一个StringBuilder就可以了。在所有的语句执行完,再提交事务,而不要每一滴执行语句都提交事务。 --------------------编程问答-------------------- http://www.google.com.hk/search?hl=zh-CN&newwindow=1&safe=strict&q=c%23+bulk+insert&oq=c%23+bulk+insert&aq=f&aqi=g2&aql=&gs_sm=e&gs_upl=3848l3848l0l4316l1l1l0l0l0l0l186l186l0.1l1l0

试试这种insert方法,专门针对大量数据 --------------------编程问答-------------------- 超牛的问题啊 --------------------编程问答-------------------- 所有sql语句拼接,用事务来执行,效率很高. --------------------编程问答-------------------- 事务应该是效率最高的吧
--------------------编程问答-------------------- 事务还可以回滚处理,很好用 --------------------编程问答-------------------- c# bulk insert最好,但数量太大时会失败。自己注意处理下。
补充:.NET技术 ,  C#
CopyRight © 2012 站长网 编程知识问答 www.zzzyk.com All Rights Reserved
部份技术文章来自网络,