日期:2014-05-17  浏览次数:20587 次

求mssql高效的插入方法
数据源是程序里的录入记录,现在用的保存方法是调用存储过程(存储过程的操作就是insert into table values(***))逐条插入或者拼接语句(insert into talbe select *** union all select ...)批量插入,但是当程序里的记录比较多,感觉等待很久。数据库里有没有高效插入记录的方法?或者程序里本身有的高效方法(我用的是delphi7里的ado)?谢过。

------解决方案--------------------
引用:
引用:一行一行插入,无论什么方式都不会高效的,你试一下能否转换成一个数据集插入
insert into table select *** union all select *** union all ...算不算,还是用数据集组件的方法adoquery.UpdateBatch?
这一步已经算没办法中的办法了。但是大数据量的导入最好使用文件形式,然后借助BCP等工具导入
------解决方案--------------------
bulk insert比较好。可以创建一个working表,拥有相同的schema,比如xxx_working, 把一批数据bulk insert到这个working表中,然后利用SP从working表copy到生产表
------解决方案--------------------
没有特别的好的办法
因为你得需求就是定时,用程序一条一条插入
唯一可能的优化是
你可以考虑写一个显示事务,一次批次插入100-500(具体你自己测试下,这个与硬件性能有关)条。这样可能会优化一下IO。

------解决方案--------------------
先写到文件 然后bcp到临时表。数据验证后写入正式表。