Foxtable(狐表)用户栏目专家坐堂 → 再求 高效率查询代码


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

主题:再求 高效率查询代码

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/26 23:47:00 [只看该作者]

提示,查询过程尽量少用Select语句,直接逐行比较,效率必须Select和Find高,一边赋值一边Select的效率比较低的:

 

尽量这样:

 

For Each r1 As DataRow In DataTables("表A").DataRows
    For Each r2 As DataRow In DataTables("表B").DataRows
        If r2("物料代码") = r1("物料代码") Then

        End if

    Next

Next


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/5/27 0:10:00 [只看该作者]

以下是引用狐狸爸爸在2011-5-26 23:47:00的发言:

提示,查询过程尽量少用Select语句,直接逐行比较,效率必须Select和Find高,一边赋值一边Select的效率比较低的:

 

尽量这样:

 

For Each r1 As DataRow In DataTables("表A").DataRows
    For Each r2 As DataRow In DataTables("表B").DataRows
        If r2("物料代码") = r1("物料代码") Then

        End if

    Next

Next

确实如此,又可减少1秒。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:5154 积分:31434 威望:0 精华:8 注册:2008/9/8 12:27:00
  发帖心情 Post By:2011/5/27 0:20:00 [只看该作者]

这样最快:2秒

For Each r1 As DataRow In DataTables("表A").DataRows
    Dim drb As DataRow
    drb = DataTables("表B").Find("[物料代码] = '" & r1("物料代码") & "'")
    If drb IsNot Nothing Then
        r1("第三列") = drb("第四列")
    End If
Next


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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/27 7:14:00 [只看该作者]

呵呵,因为表A和表B都要写数据,所以还是避免find算了,数据量愈大,影响愈大。

100行不明显,10000行就要命。

具体看这个:

http://help.foxtable.com/topics/2225.htm

[此贴子已经被作者于2011-5-27 7:47:04编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9875 积分:57590 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2011/5/27 7:45:00 [只看该作者]

三段测试都是瞬间.

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


加好友 发短信
等级:一尾狐 帖子:408 积分:2921 威望:0 精华:4 注册:2010/8/26 20:57:00
  发帖心情 Post By:2011/5/27 8:04:00 [只看该作者]

老爹  我睡醒了    辛苦你了   我现在 就调试  你的方法  


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


加好友 发短信
等级:一尾狐 帖子:408 积分:2921 威望:0 精华:4 注册:2010/8/26 20:57:00
  发帖心情 Post By:2011/5/27 8:19:00 [只看该作者]

老爹 我没理清  思路    直接 逐行  这个 简单    但是   碰上  说明里面2.2  这种情况  那代码   该怎么写      

 

主要是 这里面  还有个 特殊性   比例  a表  需求的  数量 是 10   但是  在表  同代码的  数据  有3条   他们  加起来 才等于  10   这种情况  代码比较难写

 

这也是 这个运算过程中的 主要问题  

[此贴子已经被作者于2011-5-27 8:38:48编辑过]

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/27 8:51:00 [只看该作者]

你那个写得比较乱,我也看不怎么明白,目前看来也不单单是我一个人看不明白,请用重新严谨清晰地表述一次。

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


加好友 发短信
等级:一尾狐 帖子:408 积分:2921 威望:0 精华:4 注册:2010/8/26 20:57:00
  发帖心情 Post By:2011/5/27 16:19:00 [只看该作者]

老爹  做出来了   5w条  耗时  12 妙

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


加好友 发短信
等级:管理员 帖子:47448 积分:251054 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2011/5/27 16:23:00 [只看该作者]

呵呵,恭喜,你就是牛一头,不知疲倦,动力十足。

 

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


 回到顶部
总数 37 上一页 1 2 3 4 下一页