Foxtable(狐表)用户栏目专家坐堂 → 帮我提速啊~ 从 90几 秒提高到了 2 秒左右 就看代码强不强了。。。


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

主题:帮我提速啊~ 从 90几 秒提高到了 2 秒左右 就看代码强不强了。。。

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


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

很完美啦~  呵呵。

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


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

用这个SQL语句更快了, 再次感谢C版的启发····  献给狐友们看看,从我1楼的 90秒 到下面代码只用 2.5秒~~

 (而且不用临时表过渡了, 不知道下面的dt是不是临时表?图片点击可在新窗口打开查看

Dim dt As DataTable
Dim cmd As New SQLCommand
cmd.CommandText = "Select * From {test} Where 第三列 Is Not Null"
dt = cmd.ExecuteReader()

For Each dr As DataRow In DataTables("test").DataRows
    Dim dr1 As DataRow = dt.Find("第二列 = '" & dr("第二列") & "'")
    If dr1 IsNot Nothing Then
        dr("第三列") = dr1("第三列")
    End If
Next

[此贴子已经被作者于2010-11-6 1:19:41编辑过]

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


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

dt也是临时表,不过SQLCommand显示比fill方法来得快

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


加好友 发短信
等级:管理员 帖子:47449 积分:251065 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2010/11/6 10:23:00 [只看该作者]

呵呵,记住一个原则,在某个DataTable循环进行Compute或Find,并将结果写入同一个DataTable,结果会慢100倍。

所以解决的办法是分开,宁愿临时生成一个DataTable。


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


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

以下是引用狐狸爸爸在2010-11-6 10:23:00的发言:

呵呵,记住一个原则,在某个DataTable循环进行Compute或Find,并将结果写入同一个DataTable,结果会慢100倍。

所以解决的办法是分开,宁愿临时生成一个DataTable。

您的帮助文件应该增设一个特别提醒栏目,类似这样的话,可以加入进去,以提示基础差的我等。。。  100倍啊~ 足以提振信心了····    记得那位在一个窗口中用了几十个Table结果打开时特慢,如果有这样一个栏目提醒大家,不是更好吗~    图片点击可在新窗口打开查看


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


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

以下是引用mr725在2010-11-6 12:04:00的发言:

您的帮助文件应该增设一个特别提醒栏目,类似这样的话,可以加入进去,以提示基础差的我等。。。  100倍啊~ 足以提振信心了····    记得那位在一个窗口中用了几十个Table结果打开时特慢,如果有这样一个栏目提醒大家,不是更好吗~    图片点击可在新窗口打开查看

 

以前我是用Compute碰过到此类问题,后来老六测试后说是.net的一个bug,人家牛B什么bug都不改。


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


加好友 发短信 F6
等级:狐精 帖子:3030 积分:19188 威望:0 精华:2 注册:2008/9/1 7:50:00
  发帖心情 Post By:2010/11/6 12:50:00 [只看该作者]

以下是引用狐狸爸爸在2010-11-6 10:23:00的发言:

呵呵,记住一个原则,在某个DataTable循环进行Compute或Find,并将结果写入同一个DataTable,结果会慢100倍。

所以解决的办法是分开,宁愿临时生成一个DataTable。

深刻记住!


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


加好友 发短信
等级:五尾狐 帖子:1074 积分:9872 威望:0 精华:0 注册:2008/9/2 11:34:00
  发帖心情 Post By:2010/11/6 17:08:00 [只看该作者]

以下是引用狐狸爸爸在2010-11-6 10:23:00的发言:

呵呵,记住一个原则,在某个DataTable循环进行Compute或Find,并将结果写入同一个DataTable,结果会慢100倍。

所以解决的办法是分开,宁愿临时生成一个DataTable。

确实应该特别提醒!


 回到顶部
总数 18 上一页 1 2