执行多个插入语句,最好的方法是什么?

时间:2009-06-14 15:33:20

标签: sql database sql-server-2005 database-connection

我有一个程序,我需要针对MS SQL表运行多个插入语句(动态生成)。现在,我做(伪代码):

Loop
Generate Insert Statement String
SQLCommand.Text = Generated Insert Statement String
SQLCommand.Execute().
End Loop

Close Connection

简单地构造一个由分号分隔的大型插入字符串是否更好。并只运行一个SQLCommand.Execute()语句?或者它没有什么区别?

谢谢!

6 个答案:

答案 0 :(得分:3)

你可能会发现这个technique很有用。它大大减少了处理的报表数量。

答案 1 :(得分:3)

您需要在开始插入之前启动事务。然后,当您将所有插入发送到服务器并完成循环时,您应该提交。这将为您节省大量的数据库写入!

在此处查看更多内容:http://msdn.microsoft.com/en-us/library/5ha4240h.aspx

答案 2 :(得分:1)

如果您有这个阶段的选择和能力,您可能希望升级到SQL Server 2008.它有许多额外的好处,包括在一个语句中添加T-SQL以进行多次插入。

答案 3 :(得分:0)

批处理它们要快得多,否则sql server必须查看执行计划等,具体取决于循环和语句的大小,我可能最终一次发送N条记录,以及然后让它回来,只是给自己一些喘息的空间。你可能想要考虑的另一件事(我现在就像它的'扔掉代码',[一次性事情])正在进行大量加载。 SSIS也是一种选择......

答案 4 :(得分:0)

在Postgres上,您将使用COPY,它允许以类似CSV的格式进行批量插入。不知道sqlserver是否有类似的东西。

另一种方法是使用存储的进程并将一长串数据传递给某些后端插入循环。

答案 5 :(得分:0)