以文本方式查看主题

-  Foxtable(狐表)  (http://www.foxtable.com/bbs/index.asp)
--  专家坐堂  (http://www.foxtable.com/bbs/list.asp?boardid=2)
----  [求助]后台统计代码运行速度慢  (http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=96388)

--  作者:铜豆
--  发布时间:2017/2/19 19:26:00
--  [求助]后台统计代码运行速度慢
            Dim gd,gd1,gd2,gd3,gd4,gd5,gd6 As Double
            gd = DataTables("商务通参与邀请").sqlCompute("Sum(费用)","[日期] = #" & e.NewValue & "#" )
            gd2 = DataTables("网站消费").sqlCompute("Sum(点击)","[日期] = #" & e.NewValue & "# and [推广类型] = \'百度 \'")
            gd3 = DataTables("网站消费").sqlCompute("Sum(消费)","[日期] = #" & e.NewValue & "# and [推广类型] = \'百度 \'")
            gd1 = DataTables("商务通参与邀请").sqlCompute("Sum(离四)","[日期] = #" & e.NewValue & "#" )
            gd4 = DataTables("离线宝").sqlCompute("Sum(非重复数量)","[开始时间] = #" & e.NewValue & "#")
            gd5 = DataTables("四零零").sqlCompute("Sum(非重复数量)","[开始时间] = #" & e.NewValue & "#")
            If e.DataRow.Isnull("费用") Then
                e.DataRow("点击") = Nothing
                e.DataRow("消费") = Nothing
            Else
                e.DataRow("点击") = gd2/gd
                e.DataRow("消费") = gd3/gd
            End If
            If e.DataRow.Isnull("离四") Then
                e.DataRow("离线宝") = Nothing
                e.DataRow("电话400") = Nothing
            Else
                e.DataRow("离线宝") = gd4/gd1
                e.DataRow("电话400") = gd5/gd1
            End If
老师针对以上代码  在运行过程中速度很慢,是否有优化的方法或者新的统计思路

--  作者:有点色
--  发布时间:2017/2/19 20:03:00
--  

 重置列的时候,才会慢吧?

 

 计算的数据越多,执行sqlcompute的次数越多,肯定就越慢。

 

 如果是总体计算,请把各个表的数据都加载出来,再用compute统计。


--  作者:铜豆
--  发布时间:2017/2/20 10:20:00
--  
是的老师重置列时才会慢
--  作者:有点色
--  发布时间:2017/2/20 10:36:00
--  
以下是引用铜豆在2017/2/20 10:20:00的发言:
是的老师重置列时才会慢

 

不要用重置列功能。单独做一个按钮计算。步骤如下:

 

1、把那六个表的所有数据加载出来;

 

2、循环每一行,用compute统计