以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 求用sql语句来优化! (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=61024) |
-- 作者:heying325 -- 发布时间:2014/12/5 14:11:00 -- 求用sql语句来优化! 写了下面一段代码: dim tb as table = tables("表1“)
For Each ro As Row In tb.Rows Dim dr As DataRow = DataTables("表2").SQLFind("条件……\'") If dr IsNot Nothing Then Dim s As String = dr("公式") Dim d As Double If Double.TryParse(s,d) Then ro("结果") = d Else s = s.Replace("@", "").Replace("x", 100) ro("结果") = Eval(s) End If End If Next tb.DataTable.Save 这段代码虽然可以实现我的要求,可是速度太慢,求用sql的方法批量更新,假设数据源为 con ! |
-- 作者:Bin -- 发布时间:2014/12/5 14:16:00 -- 你还用到Eval 必须得代码运行了. 大量数据执行肯定会慢 考虑换个方式不要一下子全部更新
|
-- 作者:heying325 -- 发布时间:2014/12/5 14:21:00 -- 请问sql server 有类似 Eval 这样的处理方式么? |
-- 作者:Bin -- 发布时间:2014/12/5 14:27:00 -- 没有. |
-- 作者:有点甜 -- 发布时间:2014/12/5 14:41:00 -- 以下是引用heying325在2014-12-5 14:21:00的发言:
请问sql server 有类似 Eval 这样的处理方式么?
没有,必须先取出公式,再计算方可。 |
-- 作者:有点甜 -- 发布时间:2014/12/5 14:42:00 -- 速度慢的原因是你多次用到了sqlFind,正常的,应该把表数据一次性加载出来,然后用find函数才对的 |