我创造了许多光标在我的应用程序通过行操作中我只选择了500或1000个记录每个光标单次运行执行行,以便光标可以完成的循环在单次运行中很快成为postilion,换句话说,我为单个游标运行选择了有限数量的记录。SQL服务器 - 虽然与“本地静态READ_ONLY FORWARD_ONLY”光标
要执行光标更快,而不是放在我用以下声明光标的两种服务器的负载。
宣言1: DECLARE DB_CURSOR_01 CURSOR本地静态READ_ONLY FORWARD_ONLY FOR
宣言2: DECLARE DB_CURSOR_02 CURSOR FAST_FORWARD FOR
注:我不使用鼠标的默认声明,我正在使用其他类型的游标使其工作得更快,据我所知,上面提到的声明1比声明2更快,纠正我,如果我错了。
问: 由行操作做行的另一种方式是通过“在使用临时表圈”。所以,现在我的问题是,如果我使用临时表将所有游标转换为while循环,是否有助于提高服务器性能?
其实我们的DBA指出,服务器的性能是因为游标的影响,如果我把那么多的努力,所有这些光标到while循环,它会给我带来的性能优势的转换?或者我在上面声明的声明1中声明游标的方式与while循环的性能相同?
带临时表的while循环是怎么样的? – IngoB
您确定无法用单个更新替代游标(例如,在临时表中)吗?我们过去用游标开发了大量的迁移,一次迁移需要数小时才能运行。然后我们意识到,用简单的更新来替换所有的游标是非常容易的,这使得与光标解决方案相比,迁移闪电很快。 – IngoB
@IngoB在我的情况下,我不只是在单个表上进行更新,在我的游标下,我正在执行的操作可能与执行其他选择语句的计算然后将数据插入到其他表中一样。这只是一个例子,我可能会有不同的游标执行不同的操作。 –