日期:2014-05-17  浏览次数:20381 次

关于复杂的运算过程,求教有什么方法可以实现这个过程
假设我要对某表 Table1 下面的100条记录进行复杂运算,完成后要更新这100条记录,计算的过程需要用到字典、数组等等

现在已经知道有以下几种方式实现:

1.将记录使用Ado读取到程序中,计算得到结果后,用Update更新数据这100条

2.使用存储过程实现(但问题是用到的这类组件Sqlserver中都没有提供,实现各种循环是否只能用游标之类的操作,不知道能不能实现?)

3.使用注册的Dll生成表值函数去实现



我的眼界有限,不知道有没有其它更好的办法来实现这种操作?

这三者的速度不知道哪个比较快?
------解决方案--------------------
问题不够具体
你的算法到底能怎么实现,是否一定要一条一条处理?

不清楚情况下,可能说什么都多余,不过还是补充下可能的解决方法:
1、算法如果描述清楚的话,可能存储过程并不需要一条一条处理。
2、可能的话,可以用clr存储过程成批处理
3、可能的话,可以用clr函数单条处理

------解决方案--------------------
这个可能思路不能局限了

既然求最小距离,本质上本来应该是集合操作,你因为已经有了非集合的算法而不愿考虑几何计算方法。
有无可能要求以此求10000个点的最小距离?这时你原来的算法性能讷讷给满足要求吗?


------解决方案--------------------
从数据库用存储过程借助辅助表也能实现你的需求(记得以前做过类似的最短距离求算的存储过程,是用类似于遍历的方法做的),但是,一般说来,数值运算不是数据库的强项,如果你的客户端与数据库连接没问题的话,建议还是将数据读入应用程序,采用数组来处理效率可能更高一些.
------解决方案--------------------
就你的方法的话,应该是 第三个相对效率比较高一些 

现在SQL SERVER有CLR函数 不知道对你的有没有用