设为首页收藏本站Access中国

Office中国论坛/Access中国论坛

 找回密码
 注册

QQ登录

只需一步,快速开始

12下一页
返回列表 发新帖
查看: 3226|回复: 10
打印 上一主题 下一主题

[窗体] 怎么才能提高更新数据的速度

[复制链接]
跳转到指定楼层
1#
发表于 2015-5-19 13:24:37 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
   下面这段代码,在数据量比较大的情况下,更新太慢了,请问怎么才能提高更新速度,谢谢
    rs.Open "select * from Tb_sf_bdsf_temp", mydb, 3, 3
    For i = 1 To rs.Recordcount
        DoCmd.RunSQL "UPDATE t_perpiece_sj  set FsplitLine17='" & Format(Date, "yyyy-mm-dd") & "' where FproSpe='Shouf' and Fdept='DeptA' and FsplitLine17='0' and forderno='" & rs!Forderno & "' and Fstyle='" & rs!Fstyle & "' and format(fdate,'yyyy-mm-dd')<='" & Txtrq & "'"
    rs.MoveNext
    Next
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享分享 分享淘帖 订阅订阅
推荐
发表于 2015-5-19 14:44:41 | 只看该作者
1、尽可能建立主键、索引和关系,勾选级联更新和删除。
——如果能够建立关系的话,直接建立更新查询比ADO是快一些的。毕竟ADO需要遍历每个记录。
2、如果没法做到第1点,那么请设置t_perpiece_sj表的主键(当然不能是“自动编号”,假定是字段A),创建一个临时表(设置与_perpiece_sj表相同的主键),把更新查询修改为追加查询,将相应的字段追加到该临时表,然后通过这个临时表和t_perpiece_sj链接进行更新。
3、如果没法做到这两点,那就只能做些微调了。例如,假设无需对记录集进行操作的话,尽可能使用只前的游标(adOpenForwardOnly,0)和只读的记录锁定类型(adLockReadOnly,1)。另外,注意到你的记录集只使用了2个字段。如果没什么必要的话,可以只选择这两个字段。没必要使用“*”
回复 支持 1 反对 0

使用道具 举报

点击这里给我发消息

2#
发表于 2015-5-19 13:34:04 | 只看该作者
里面用到Format函数,去掉,日期也是可以直接判断的
3#
 楼主| 发表于 2015-5-19 13:36:28 | 只看该作者
盗梦 发表于 2015-5-19 13:34
里面用到Format函数,去掉,日期也是可以直接判断的

是format影响了更新速度吗?

由于需要更新的数据可能会比较多,能用其它方法提升下速度吗?

点击这里给我发消息

4#
发表于 2015-5-19 14:10:19 | 只看该作者
另外为
FproSpe Fdept FsplitLine17 等 查询的字段在数据表中建立相应的索引
则速度会快很多
5#
 楼主| 发表于 2015-5-19 14:14:04 | 只看该作者
tmtony 发表于 2015-5-19 14:10
另外为
FproSpe Fdept FsplitLine17 等 查询的字段在数据表中建立相应的索引
则速度会快很多

好的,谢谢,我试试
6#
发表于 2015-5-19 14:18:56 | 只看该作者
后台用的是什么?如果是sql serve建议试试sql server 的视图或者存储过程
7#
 楼主| 发表于 2015-5-19 14:25:47 | 只看该作者
leonshi 发表于 2015-5-19 14:18
后台用的是什么?如果是sql serve建议试试sql server 的视图或者存储过程

后台是sql server
9#
 楼主| 发表于 2015-5-19 15:05:40 | 只看该作者
roych 发表于 2015-5-19 14:44
1、尽可能建立主键、索引和关系,勾选级联更新和删除。
——如果能够建立关系的话,直接建立更新查询比ADO ...

非常感谢,马上就检查并更改

点击这里给我发消息

10#
发表于 2015-5-19 15:33:46 | 只看该作者
不要用循环,这应是个基本原则吧。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

QQ|站长邮箱|小黑屋|手机版|Office中国/Access中国 ( 粤ICP备10043721号-1 )  

GMT+8, 2024-5-2 02:36 , Processed in 0.105686 second(s), 34 queries .

Powered by Discuz! X3.3

© 2001-2017 Comsenz Inc.

快速回复 返回顶部 返回列表