Foxtable(狐表)用户栏目专家坐堂 → [求助] CrossTableBuilder 耗时的问题


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

主题:[求助] CrossTableBuilder 耗时的问题

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
[求助] CrossTableBuilder 耗时的问题  发帖心情 Post By:2022/1/5 3:06:00 [显示全部帖子]

交叉统计一年(大概 几十万数据销售数据,交叉统计后得出的统计表有 三万多行,如下代码 耗时  667 秒 这效率实在是快奔溃了 请问如何才能 优化 或 提高统计效率?


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

'代码如下:--------------------------------------------------------------------------------------------------------------------------------------

Dim st As Date = Date.Now
Dim jb As New SQLJoinTableBuilder("临时测试表1","测试表A")
jb.ConnectionName = _sjymc
jb.AddExp("年份","year(日期)",True)
jb.AddExp("月份","month(日期)",True)
jb.AddExp("客户id","btypeid",True)
jb.AddExp("产品id","PtypeId",True)
'--------------------------------------------------------------------------------------------------------------------------------------
jb.AddExp("金额","sum(金额)")
jb.AddExp("数量","sum(数量)")
jb.AddExp("毛利","sum(金额) - sum(成本)")
'--------------------------------------------------------------------------------------------------------------------------------------
jb.Filter = "日期 >= '2021-01-01' and 日期 <= '2021-12-31' and 编号 in ('11','26','45') and 类型 = '2'"
'--------------------------------------------------------------------------------------------------------------------------------------
Dim cb As new CrossTableBuilder("临时测试表",jb.BuildSQL,_sjymc)
cb.HGroups.AddDef("年份")
cb.HGroups.AddDef("月份")
cb.HGroups.AddDef("产品id")
cb.VGroups.AddDef("客户id")
cb.Totals.Adddef("数量")
cb.Totals.AddDef("实销")
cb.Totals.AddDef("毛利")
cb.Totals.AddDef("毛利率")
cb.Build()
'--------------------------------------------------------------------------------------------------------------------------------------
output.show("耗时: " & (Date.Now - st).TotalSeconds & "秒")
'--------------------------------------------------------------------------------------------------------------------------------------
MainTable = Tables("临时测试表")
[此贴子已经被作者于2022/1/5 3:07:16编辑过]

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/5 12:17:00 [显示全部帖子]

以下是引用狐狸爸爸在2022/1/5 10:55:00的发言:
建议直接用SQLGroupTableBuilder统计,可能会省点时间。

测试过了,效率没什么差异


这个问题搞了好几天 能想到的方法都测试过了 实在是奔溃吖


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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/5 16:26:00 [显示全部帖子]

如下:直接用查询表 生成分组统计表,仅花了 7秒多时间  30多万行数据

分组统计行数:313,803

客户id数量:283

产品id数量:4,437

数据库发不上来,我是直接链接客户云服务器数据库的



图片点击可在新窗口打开查看此主题相关图片如下:qq图片20220105161849.png
图片点击可在新窗口打开查看
[此贴子已经被作者于2022/1/5 16:26:39编辑过]

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/5 20:39:00 [显示全部帖子]

由于论坛上传附件大小限制,仅能 将压缩包分压成 3个了

Access数据库里 明细表我添加了 50万数据 超级慢


 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part01.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part02.rar

 下载信息  [文件大小:   下载次数: ]
图片点击可在新窗口打开查看点击浏览该文件:测试.part03.rar


[此贴子已经被作者于2022/1/5 20:41:10编辑过]

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/6 10:35:00 [显示全部帖子]

里面的数据我是随意添加的
但生成报表格式就是这样的
横向分组为商品资料
垂直分组为客户名称
统计销售
这种格式很普遍的

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/6 13:27:00 [显示全部帖子]

或者有没其他方式 实现这种格式报表呢?
我尝试过用 多表统计 再链接一齐的方式 也是很慢
分组统计后,再新增一张临时表,将分组统计的数据 以横竖显示方式 填入临时表,但在竖列统计时 很慢

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/6 14:14:00 [显示全部帖子]

图片点击可在新窗口打开查看我的加密狗过期了 现在最后的版本是20年5月的

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/6 14:36:00 [显示全部帖子]

我的意思是我的加密狗已经过期了 现在在用的版本是20年5月的版本 后面的版本没法升级了
请问有没其他方法先解决我目前这个燃眉之急的问题呢?

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/6 20:03:00 [显示全部帖子]

请问续费多少吖?
普开升级高开多少钱呢?
高开升级高开多少钱呢?
因为我两种都有。

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


加好友 发短信
等级:一尾狐 帖子:481 积分:5789 威望:0 精华:0 注册:2016/1/28 2:59:00
  发帖心情 Post By:2022/1/7 15:44:00 [显示全部帖子]

以下是引用狐狸爸爸在2022/1/6 13:56:00的发言:
经过重新设计,交叉统计的速度可以提高8倍左右,等下次更新吧。

极端情况是否崩溃,是windows和.net决定的,我只负责加速。
[此贴子已经被作者于2022/1/6 13:57:21编辑过]

狐爸,受您的启发,昨晚通宵重新分析,再次重写了代码逻辑(不用交叉统计函数),终于给我优化成您的速度了,现在统计一年的,仅用了 60-80 秒比之前的 六百多秒 也是快了 8倍多图片点击可在新窗口打开查看

[此贴子已经被作者于2022/1/7 15:43:54编辑过]

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