0

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

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

Close Connection

简单地构造一大串插入,用分号分隔是否更好。并且只运行一条 SQLCommand.Execute() 语句?还是没有区别?

谢谢!

4

6 回答 6

4

您可能会发现这种技术很有用。它显着减少了处理的语句数量。

于 2009-06-14T15:38:14.393 回答
3

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

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

于 2009-06-14T15:49:11.357 回答
1

如果您在这个阶段有选择并有能力这样做,您可能想要升级到 SQL Server 2008。它有很多额外的好处,包括对 T-SQL 的补充,可以在一个语句中执行多个插入。

于 2009-06-14T15:42:28.253 回答
0

将它们批量处理会快得多,否则 sql 服务器必须查看执行计划等,具体取决于循环和语句的大小,我可能最终一次发送 N 条记录,然后让它回来,只是给自己一些喘息的空间。您可能要考虑的另一件事(我来这里就好像它的“丢弃代码”,[一次性])只是进行批量加载。SSIS 也是一种选择...

于 2009-06-14T15:38:39.947 回答
0

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

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

于 2009-06-14T15:39:39.633 回答
0

取决于你的倍数是多少。但是你绝对应该看看 Sql Bulk Copy - 非常快,非常方便。

马克

于 2009-06-14T15:44:31.117 回答