小编med*_*r19的帖子

如何实现基于集合的算法/UDF

我有一个算法,我需要针对具有 800K 行和 38 列的表中的每一行运行该算法。该算法在 VBA 中实现,并使用来自某些列的值来处理其他列进行大量数学运算。

我目前正在使用 Excel (ADO) 来查询 SQL 并使用带有客户端游标的 VBA 通过循环遍历每一行来应用算法。它可以工作,但需要 7 个小时才能运行。

VBA 代码非常复杂,将其重新编码为 T-SQL 需要做很多工作。

我已经阅读了 CLR 集成和 UDF 作为可能的路由。我还考虑将 VBA 代码放在 SSIS 脚本任务中以更接近数据库,但我确信存在解决此类性能问题的专家方法。

理想情况下,我能够以基于并行集的方式对尽可能多的行(全部?)运行算法。

任何帮助都很大程度上取决于如何在此类问题上获得最佳性能。

- 编辑

感谢您的评论,我使用的是 MS SQL 2014 Enterprise,这里有更多详细信息:

该算法在时间序列数据中找到特征模式。算法中的函数执行多项式平滑、窗口化,并根据输入标准找到感兴趣的区域,返回十几个值和一些布尔结果。

我的问题更多是关于方法论而不是实际算法:如果我想一次在多行上实现并行计算,我的选择是什么。

我看到建议重新编码到 T-SQL 中,这是很多工作但可能的,但是算法开发人员在 VBA 中工作并且经常更改,因此我需要与 T-SQL 版本保持同步并重新验证每个改变。

T-SQL 是实现基于集合的函数的唯一方法吗?

sql-server ssis functions sql-server-2014

14
推荐指数
1
解决办法
521
查看次数

标签 统计

functions ×1

sql-server ×1

sql-server-2014 ×1

ssis ×1