Foxtable(狐表)用户栏目专家坐堂 → [讨论] 跨表多条件统计如何提高速度?


  共有3672人关注过本帖树形打印复制链接

主题:[讨论] 跨表多条件统计如何提高速度?

帅哥哟,离线,有人找我吗?
bahamute
  1楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
[讨论] 跨表多条件统计如何提高速度?  发帖心情 Post By: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
  2楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4628 积分:33772 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/2/28 23:02:00 [只看该作者]

上个例子吧

 回到顶部
帅哥哟,离线,有人找我吗?
bahamute
  3楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:六尾狐 帖子:1421 积分:11294 威望:0 精华:0 注册:2008/9/1 22:20:00
  发帖心情 Post By:2014/2/28 23:09:00 [只看该作者]

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

 回到顶部
帅哥哟,离线,有人找我吗?
y2287958
  4楼 | 信息 | 搜索 | 邮箱 | 主页 | UC


加好友 发短信
等级:狐神 帖子:4628 积分:33772 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/2/28 23:12:00 [只看该作者]

方法很多
具体问题得具体分析滴

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

 回到顶部