Foxtable(狐表)用户栏目专家坐堂 → 速度,速度!


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

主题:速度,速度!

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
速度,速度!  发帖心情 Post By:2017/7/12 15:40:00 [只看该作者]

我在命令窗口执行如下代码,结果竟耗时41分钟!
数据库表中符合条件的有20104行(共30530行),这段代码有改进的余地吗?
数据库在阿里云,本地带宽足够用。

Dim st As Date = Date.Now
Dim r As Row
For Each r In Tables("杰西入库记录表").Rows
    If r("类型") = "调货" Or r("类型") = "配货" Then
        r("操作日期") = r("日期")
        r.Save
    End If
Next

Dim ddt As DataTable
Dim dr As DataRow
Dim cmd As new SQLCommand
cmd.C
cmd.CommandText = "select [_Identify],日期,类型,操作日期 fr om {乐町入库记录表} where 类型 in ('调货','配货') "
ddt = cmd.ExecuteReader(True)
For Each dr In ddt.DataRows
    dr("操作日期") = dr("日期")
Next
ddt.Save
DataTables("杰西入库记录表").Load
MessageBox.Show("耗时: " & (Date.Now - st).TotalSeconds & "秒")

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


加好友 发短信
等级:二尾狐 帖子:574 积分:4264 威望:0 精华:0 注册:2015/5/13 8:32:00
  发帖心情 Post By:2017/7/12 15:56:00 [只看该作者]

如果 直接 赋值 某列=某列 可以参考下面的代码,直接后台跟新,无须加载!
cmd.CommandText = " u p d a t e {乐町入库记录表} set 操作日期=日期 where 类型 in ('调货','配货') "
[此贴子已经被作者于2017/7/12 15:57:28编辑过]

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/7/12 16:12:00 [只看该作者]

谢谢回复。
但是这样不行啊,执行结果是:所有满足条件的行其操作日期列都赋了同一个值。

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


加好友 发短信
等级:二尾狐 帖子:574 积分:4264 威望:0 精华:0 注册:2015/5/13 8:32:00
  发帖心情 Post By:2017/7/12 16:17:00 [只看该作者]

 执行结果是:所有满足条件的行其 操作日期 列都赋了 同行   日期 这个值 !
怎么是同一个值呢?,应该是同行的值

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/7/12 16:30:00 [只看该作者]

我感觉UPDATE没有循环的概念,并不“取同行的日期值”,似乎只取第一个满足条件的日期值,并将此值赋给了所有行的操作日期列。
如果可以实现同行操作日期=同行日期,那可太好了。

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


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/12 16:55:00 [只看该作者]

4楼的说法没错,请测试过再说

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/7/12 17:07:00 [只看该作者]

我试过,不行呀。我再试试看。
要真的如此,可太好了。


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


加好友 发短信
等级:超级版主 帖子:112380 积分:572162 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2017/7/12 17:25:00 [只看该作者]

怎么测试的?贴出具体代码

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/7/12 17:35:00 [只看该作者]

Dim cmd As new SQLCommand
cmd.ConnectionName = "jcc"
cmd.CommandText = "upd ate {乐町入库记录表} set 操作日期=日期 wh ere 类型 in ('调货','配货') "
cmd.ExecuteNonQuery

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


加好友 发短信
等级:七尾狐 帖子:1699 积分:16528 威望:0 精华:0 注册:2013/7/31 13:03:00
  发帖心情 Post By:2017/7/12 18:03:00 [只看该作者]

结果

 


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

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