以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论] 跨表多条件统计如何提高速度?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46902)

--  作者:bahamute
--  发布时间:2014/2/28 22:59:00
--  [讨论] 跨表多条件统计如何提高速度?
跨表使用computer多条件统计如何提高速度?

按照帮助中的成绩分布统计,做了一个统计表,如下图


此主题相关图片如下:clip_02.jpg
按此在新窗口浏览图片

差不多有40个条件,加载时超慢,居然半分钟才弹出页面,统计结果没问题,就是速度有问题,是我的统计方式有问题还是思路不对?附简单代码,请高手指点啊!

    

    Dim dr As DataRow = e.DataRow

    Dim dt As Table =Tables("表A")

    If e.DataCol.Name = "单位" And dr.IsNull("单位") = False Then

        dr("人数_总数") = dt. Compute("Count(姓名)","[单位] = \'" & dr("单位") & "\'")

        dr("按性别_男") = dt. Compute("Count(姓名)","[单位] = \'" & dr("单位") & "\' And [性别] =\'男\'")

        dr("按性别_女") = dt. Compute("Count(姓名)","[单位] = \'" & dr("单位") & "\' And [性别] =\'女\'")

        dr("按年龄_18至20")= dt. Compute("Count(姓名)","[单位] = \'" & dr("单位") & "\' And [年龄] >= 18 And 年龄 <=20")

        dr("按年龄_21至25")= dt. Compute("Count(姓名)","[单位] = \'" & dr("单位") & "\' And [年龄] >= 21 And 年龄 <=25")

       

    后续代码省略.........

[此贴子已经被作者于2014-2-28 23:27:22编辑过]

--  作者:y2287958
--  发布时间:2014/2/28 23:02:00
--  
上个例子吧
--  作者:bahamute
--  发布时间:2014/2/28 23:09:00
--  
如图所示,每一列都使用了compute方法,现在主要就是想了解,统计表大量使用compute的情况下,如何提高统计速度。
[此贴子已经被作者于2014-2-28 23:11:17编辑过]

--  作者:y2287958
--  发布时间:2014/2/28 23:12:00
--  
方法很多
具体问题得具体分析滴

或者看看这里
[此贴子已经被作者于2014-2-28 23:13:14编辑过]