Foxtable(狐表)用户栏目专家坐堂 → NB哄哄的分组与交叉统计,统计效率未必NB


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

主题:NB哄哄的分组与交叉统计,统计效率未必NB

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 14:52:00 [显示全部帖子]

以下是引用reachtone在2009-6-22 14:44:00的发言:
不知道老六的比例统计是怎样实现的。放着高效的SQL不用,着实有点让人想不通。分组统计、交叉统计无非是由用户定义了一些参数,把它们套用到SQL语句中不就行了吗?
foxtable的定位比较高端,尤其是对大型数据库的支持。几十万条的数据库很常见,查询统计功能必须也要非常高效才行。请老六考虑改进一下。


我看看能不能提升性能,不过需说明几点:
1、SQL直接操作后台的数据,对于已经记载的数据,是没有办法用SQL的。
2、统计这么多的数据,还是用SQL比较好,几万的数据,用GroupTableBuilder比较好。
3、FoxTable本身也支持SQL语言直接统计的,大容量,高效率的统计,掌握SQL是应该的。
4、最好不要在Foxtable的一个表中加载20万的数据,这也是Foxtable提供动态加载功能的原因。
5、今天20万,明天100万行呢,难道也全部加载进来统计?


另外,对于这种统计,事先增加年月列,效率会高很多。

[此贴子已经被作者于2009-6-22 15:17:49编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 15:04:00 [显示全部帖子]

以下是引用wcs在2009-6-22 15:00:00的发言:
不管怎么样,效率还是要努力提高一下!


这是当然的。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 15:11:00 [显示全部帖子]

关键还是日期的处理问题问题,如果事先增加年月列,尽管20万行的数据,一样可以几秒钟出来。




图片点击可在新窗口打开查看此主题相关图片如下:012.gif
图片点击可在新窗口打开查看

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 15:13:00 [显示全部帖子]

以下是引用reachtone在2009-6-22 15:01:00的发言:

几十万条的数据库如果一下子加载到foxtable中确实不是一个好的办法,但在实际工作中,这种情况也会经常碰到。比如,要统计连续几年的年度增长率,必须要把这几年的数据都加载进来才行。
现在的问题是,在20万条数据已经加载的情况下,用QueryBuilder和foxtable自身的分组交叉分别进行统计,其效率差别是非常大的。我的意思是,能否改进一下目前的分组、交叉统计。


看10楼的回复,Foxtable本身的统计是很高效的,我加了年和月的表达式列,统计你的20万数据,一样可以在几秒钟内统计出来,只是这样的话,同比和环比计算不了,不过这个很容易解决的。

看来Foxtable的日期拆分有问题,我分析一下,应该可以处理好的。

看来这个分组统计和交叉统计,还是很牛皮的,不过得有高手过招才有。

图片点击可在新窗口打开查看

[此贴子已经被作者于2009-6-22 15:19:52编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 15:36:00 [显示全部帖子]

以下是引用reachtone在2009-6-22 15:31:00的发言:

呵呵,如果加了“年”和“月”,就没办法计算比例了。这和之前没更新的分组与交叉统计方法相同,当然很快了。
看老六的意思,估计很快能解决。期待中!



呵呵,速度降低,和占比计算无关的,占比占用的计算时间,绝对不到0.1秒,用旧版本的foxtable统计你的20万数据,一样很久出不来结果的。
这个问题解决了,等下次更新吧。

[此贴子已经被作者于2009-6-22 15:35:53编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 15:56:00 [显示全部帖子]

新旧的速度是一样的,就是根据日期分组有问题,其它都很高效。
你的那个建议我看不懂,什么是无关列,其实任何一个列,都有可能用来分组,也有可能用来统计的。

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 16:17:00 [显示全部帖子]

我明白了,有意思。
我考虑考虑吧。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 16:53:00 [显示全部帖子]

1、已经搞定,刚刚测试了一下,直接根据日期,按年和月分组统计面积,用时36秒
2、如果事先加上年月列,用时不到6秒。

可以用SQL建立查询表的时候,直接加上年月列,例如:

SELECT Year(日期) AS 年, Month(日期) AS 月,数量 FROM {订单}

[此贴子已经被作者于2009-6-22 16:55:08编辑过]

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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 17:02:00 [显示全部帖子]

以下是引用reachtone在2009-6-22 17:00:00的发言:
事先加上年月列的话,那这两列就不是日期型的了。还能生成同比与环比数据?


哈哈,只要我愿意就行。


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2009/6/22 17:13:00 [显示全部帖子]

继续研究一下,看看能不能做到10秒。

 回到顶部
总数 17 1 2 下一页