Foxtable(狐表)用户栏目专家坐堂 → 保存太慢


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

主题:保存太慢

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 13:47:00 [显示全部帖子]

和保存有关的表事件有没有什么代码?

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 14:14:00 [显示全部帖子]

这些都是窗口事件。窗口表事件、全局表事件有没有什么代码?

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 14:25:00 [显示全部帖子]

11万行全部都是改过数据的,全部都要保存?还是说11万行只是其中几行的数据被改过?

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 14:40:00 [显示全部帖子]

这种就没有办法了,这么多数据保存肯定是需要时间的。如果是远程数据库,考虑到带宽等原因会更慢。或者考虑分批进行处理,处理一部分就保存一部分

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 15:11:00 [显示全部帖子]

看看任务管理器,如果程序的CPU使用率还在变化,说明还在保存,可能是网络等原因。如果没有变化,说明程序已经卡死了。

如果这些数据都是新增的可以换种方式保存:http://www.foxtable.com/bbs/dispbbs.asp?boardid=2&id=147288
如果不是新增,换个思路也可以处理,就是在数据库提供一个临时空表,先使用sqlBulkCopy把数据全部导入空表,然后使用sql的update功能把空表刚导入的数据更新到业务表里

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 16:27:00 [显示全部帖子]

上面论坛链接里就有可用的代码

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 16:49:00 [显示全部帖子]

啊,使用这种方法更新11万行数据!还不如1楼的DataTables("产品").Save()快。

如果是access数据库,只能DataTables("产品").Save(),没有什么好办法。

如果是SqlServer,先使用sqlBulkCopy把所有数据保存到数据库的一个同结构的空表,然后一条直接跨表update即可

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


加好友 发短信
等级:超级版主 帖子:111393 积分:567029 威望:0 精华:9 注册:2015/6/24 9:21:00
  发帖心情 Post By:2024/7/4 17:23:00 [显示全部帖子]

更新业务表数据后,清空这个表即可

 回到顶部