存储过程1有一个select查询返回一个记录集,日期是特定的。我正在使用游标来浏览该记录集,并且每行调用另一个存储过程。
存储过程2在光标中为每个值插入约20K行。
由于光标中有大约100条记录,因此插入的总行数达到200K,这使查询运行数天,直到它停止生产。
相同的查询大约需要8分钟。
我尝试在SSIS(dev)中使用foreach容器,现在需要5分钟(dev)。
是否有更快的方式插入这些记录?
我考虑使用表值函数,但考虑到第一个记录集只包含日期,两者之间的连接很难。
答案 0 :(得分:0)
根据存储过程2的作用,查看批量插入可能是值得的。
请参阅:https://www.simple-talk.com/sql/learn-sql-server/bulk-inserts-via-tsql-in-sql-server/
您可能还想查看索引和prod环境的配置,以确保最佳的负载性能。 上面的链接提供了一些关于如何提高插入性能的建议。
所以绝对值得一读。