Foxtable(狐表)用户栏目专家坐堂 → 令人目瞪口呆的效率差别(有修正)


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

主题:令人目瞪口呆的效率差别(有修正)

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


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

呵呵··   易服先生要图片点击可在新窗口打开查看

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


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

老大,您怎么可以给自己加“精”呢(1楼)?  图片点击可在新窗口打开查看    声明一下加入帮助就可以了嘛,那里都是您的“精髓”啊。

[此贴子已经被作者于2010-12-8 23:42:16编辑过]

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


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

呵呵,加精是为了更容易引起大家注意。


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


加好友 发短信 一级勋章 三级勋章 二级勋章
等级:超级版主 帖子:6318 积分:33945 威望:0 精华:10 注册:2008/8/31 20:56:00
  发帖心情 Post By:2010/12/9 9:17:00 [只看该作者]

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

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


加好友 发短信
等级:四尾狐 帖子:810 积分:5250 威望:0 精华:0 注册:2009/2/6 10:38:00
  发帖心情 Post By:2010/12/9 9:20:00 [只看该作者]

放到帮助中吧

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


加好友 发短信
等级:五尾狐 帖子:1181 积分:8108 威望:0 精华:1 注册:2009/1/17 10:52:00
  发帖心情 Post By:2010/12/9 18:15:00 [只看该作者]

以下是引用狐狸爸爸在2010-12-7 23:13:00的发言:

 

那就比较一下这两段吧

 

第一段:

 

Dim v As Double
For Each
dr As DataRow In DataTables("表A").DataRows
    v
= DataTables("表A").Compute("Count(第二列 )", "第二列 = " & dr("第一列"))
   
dr("第四列") = v

Next

 

第二段:

 

Dim Dic As new Dictionary(of DataRow, Integer)
Dim
v As Double

For Each
dr As DataRow In DataTables("表A").DataRows
    v = DataTables("表A").Compute("Count(第二列 )", "第二列 = " & dr("第一列"))

    dic
.Add(dr, v
)
Next
For Each
dr As DataRow In dic.
Keys
   
dr("第四列") = dic(dr
)
Next

對比上面的代碼效率時,第一段用時 0.35秒 ; 第二段用時 0.37秒

 

對比第一頁 一樓的代碼效率時,第一段用時 235.08秒   ; 第二段用時 0.8秒

 

 

不懂,怎麼會這樣...

 

 


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


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

分别选中第四列,按一下系统的还原按钮,再执行这两段代码就有明显的差别了。。。。


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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/12/9 19:34:00 [只看该作者]

用SQL语句应该很快快

内部表或者Access的语法:

 

 update {表A} a Left Join {表A} b on a.第一列 = b.第二列

set a.第三列 = True

where b.[_Identify] Is Null

 

SQL Server的语法:

update  a

set a.第三列 = True

from {表A} a left join {表A} b  on a.第一列 = b.第二列

where b.[_Identify] Is Null

[此贴子已经被作者于2010-12-9 19:34:31编辑过]

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


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

以下是引用lxl在2010-12-9 19:34:00的发言:

用SQL语句应该很快快

内部表或者Access的语法:

 

 update {表A} a Left Join {表A} b on a.第一列 = b.第二列

set a.第三列 = True

where b.[_Identify] Is Null

 

SQL Server的语法:

update  a

set a.第三列 = True

from {表A} a left join {表A} b  on a.第一列 = b.第二列

where b.[_Identify] Is Null

[此贴子已经被作者于2010-12-9 19:34:31编辑过]

这个好····

[此贴子已经被作者于2010-12-9 20:00:40编辑过]

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


加好友 发短信 一级勋章
等级:MVP荣誉狐 帖子:858 积分:6071 威望:0 精华:19 注册:2008/9/1 9:13:00
  发帖心情 Post By:2010/12/9 20:00:00 [只看该作者]

Dim cmd As New SQLCommand
cmd.CommandText = "update {表A} a Left Join {表A} b on a.第一列 = b.第二列 set a.第三列 = True where b.[_Identify] Is Null"
cmd.ExecuteNonQuery

 回到顶部
总数 96 上一页 1 2 3 4 5 6 7 8 9 10 下一页