2
如何实现基于集合的算法/ 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是实现基于集合的函数的唯一方法吗?