Foxtable(狐表)用户栏目专家坐堂 → 这样的代码,还能优化吗?


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

主题:这样的代码,还能优化吗?

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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/9/17 9:29:00 [显示全部帖子]

没有测试数据很难判断那句有问题(最好有足够多的数据),还有你应该告知你统计用了多少时间。

从编码的原则来说,只要达到效果,时间越短越好,不管用了什么方法。


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/9/17 17:30:00 [显示全部帖子]

个人认为这样统计,即使是需要统计十多万的甚至几十万的代码应该2-3秒就足够了。

如果就几万数据,可能就1秒多。所以还是要看老朱自己测试的效率是多少了。

还是那句话,导入统计不可取,数据越多效率越低。可以统计完导入再变换,这样2-3秒应该够了


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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/9/17 17:38:00 [显示全部帖子]

以下是引用blackzhu在2013-9-17 17:30:00的发言:
  老大 你 说说 那一句代码 我多余 我 看下.

Filter = "[部门] = '" & Ary(0) & "' And 组别='" & Ary(1) & "'And 管组民警='" & Ary(2) & "' And 项目='" & Ary(3) & "'"

    If Filter > "" Then
 
你不觉得这样判断完全多余吗? 当然这不是主要原因。
你如果使用SQL的group by 这些筛选再计算完全都是没有必要的!用这个先统计好,再进转换,这样你就省去了把几万数据导入到内存中了,也不用再进行computer了效率提升数倍到数十倍

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


加好友 发短信
等级:七尾狐 帖子:1731 积分:11255 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2013/9/17 17:43:00 [显示全部帖子]

以下是引用blackzhu在2013-9-17 17:37:00的发言:

Dim cmd As New SQLCommand
Dim dt As DataTable
cmd.C
cmd.CommandText = "SELECT DISTINCT  [_Identify],日期,部门,报表名称,项目,数据统计项目,统计类型,数值,统计部门,年,月,管组民警,组别,款号,品名,模具规格,工件名称,工件规格,区分 from{十监区管理} Where " & Filter & "And (组别 ='大件组' Or 组别='小件组')"
dt = cmd.ExecuteReader()

 

你这句话已经跟我说的不一样了。我说的是你连这个都不用导入,后面的计算也都不需要,你获取的已经是你统计完成的表了。

建议你上几百条数据供大家测试,你在进行测试,看看代码能优化到哪里,光看代码,你都没有去测试,哪些代码花费了时间长,、

比如你导入内存话了多少时间,统计代码多少时间,等等。

 


 回到顶部