我想避免光标的性能问题。我要解决的问题是:使用由 UDF 计算的结果更新主表中每条记录(大约 6000000)(通过使用一个更新语句)上的列(VARCHAR),该 UDF 本身应该更新另一个计数器柜台表。
- 问题是 UDF 无法更新 Countertable,因为它是副作用。- 由于 READONLY 标志,它也不能更新临时表或变量表。- 我在主表上使用了一个更新触发器,但该触发器由一个更新语句触发一次,该语句存储在一个名为 insert 的表中。
我选择的解决方案是使用光标,如下所示。
- 从主表创建一个游标。
- 获取第一行
- 从 Counter 表中获取计数器
- 计数器++
- 调用 PROC 来计算结果、计数器等
- 使用 PROC 的结果更新主表
- 更新计数器表
- 获取另一行
但请相信我,大约 125 小时(没办法)太慢了。
有人可以帮助我吗?