用于逐行操作的光标替代

时间:2017-01-21 18:55:32

标签: sql-server stored-procedures ssis-2008

存储过程1有一个select查询返回一个记录集,日期是特定的。我正在使用游标来浏览该记录集,并且每行调用另一个存储过程。

存储过程2在光标中为每个值插入约20K行。

由于光标中有大约100条记录,因此插入的总行数达到200K,这使查询运行数天,直到它停止生产。

相同的查询大约需要8分钟。

我尝试在SSIS(dev)中使用foreach容器,现在需要5分钟(dev)。

是否有更快的方式插入这些记录?

我考虑使用表值函数,但考虑到第一个记录集只包含日期,两者之间的连接很难。

1 个答案:

答案 0 :(得分:0)

根据存储过程2的作用,查看批量插入可能是值得的。

请参阅:https://www.simple-talk.com/sql/learn-sql-server/bulk-inserts-via-tsql-in-sql-server/

您可能还想查看索引和prod环境的配置,以确保最佳的负载性能。 上面的链接提供了一些关于如何提高插入性能的建议。

所以绝对值得一读。