Foxtable(狐表)用户栏目专家坐堂 → [求助] 数据加载速度优化--甜版请进


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

主题:[求助] 数据加载速度优化--甜版请进

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


加好友 发短信
等级:一尾狐 帖子:479 积分:4505 威望:0 精华:0 注册:2008/9/4 14:40:00
[求助] 数据加载速度优化--甜版请进  发帖心情 Post By:2015/1/1 1:33:00 [只看该作者]

甜版,你好,有个问题想请教你;

本地外部数据源Access,有约600万条记录,加载其中约7万行数据,用时75秒,正常吗,可以以提升速度吗,请抽空赐教,谢谢。

Access数据文件450MB,就不上传文件了,代码如下:

初始加载表不加载数据,加载按钮代码如下:(其中变量内容:sh000001,sh600489,……,由30多个不同的股piao代码组成)

DataTables("历史数据").LoadFilter = "[股piao代码] in ("& Functions.Execute("HS加载股piao") &")"

DataTables("历史数据").Load
[此贴子已经被作者于2015-1-1 1:34:34编辑过]

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


加好友 发短信
等级:三尾狐 帖子:621 积分:5130 威望:0 精华:1 注册:2014/8/7 6:56:00
  发帖心情 Post By:2015/1/1 4:52:00 [只看该作者]

想不到好办法

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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2015/1/1 8:04:00 [只看该作者]

DataTables("历史数据").LoadFilter = "[股piao代码] in ("& Functions.Execute("HS加载股piao") &")"
这个in 就注定了,肯定慢。

我这里有5万5千条数据,60列,从分页到全部加载完毕,用时不到7秒。

加载速度除了与记录条数有关,与列数关系也很大,不知道你有多少列。

请把全部数据压缩后,通过网盘发上来,正需要大数据测试。

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


加好友 发短信
等级:一尾狐 帖子:479 积分:4505 威望:0 精华:0 注册:2008/9/4 14:40:00
  发帖心情 Post By:2015/1/1 14:41:00 [只看该作者]

列数不多,只有9列,如果不用in ,还有其他更好的方法吗?或把你7秒的代码贴上来,谢谢!

Access数据文件压缩后129MB,已上传网盘(提取码:e340):http://yunpan.cn/cyj26pk7j4tz4

[此贴子已经被作者于2015-1-1 15:15:26编辑过]

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


加好友 发短信
等级:小狐 帖子:321 积分:1916 威望:0 精华:0 注册:2014/8/24 13:36:00
  发帖心情 Post By:2015/1/1 21:58:00 [只看该作者]

1、在数据库中 给 历史数据的 股piao代码 设置重复索引

2、加载时关闭表刷新和自动列宽

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


加好友 发短信
等级:一尾狐 帖子:479 积分:4505 威望:0 精华:0 注册:2008/9/4 14:40:00
  发帖心情 Post By:2015/1/2 12:15:00 [只看该作者]

1、在数据库中 给 历史数据的 股piao代码 设置重复索引

2、加载时关闭表刷新和自动列宽


你好,没安装Access,且不懂设置重复索引,另外关闭表刷新和自动列宽,在帮助里没找到,请贴出代码,谢谢。


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


加好友 发短信
等级:版主 帖子:1693 积分:12135 威望:0 精华:7 注册:2013/7/11 10:52:00
  发帖心情 Post By:2015/1/2 12:47:00 [只看该作者]

在命令窗口执行

 

Dim cmd As New SQLCommand
cmd.Connection Name = 数据源名称    ‘记得把Name前面的空格去掉
cmd.CommandText = "Create Index iDate ON 历史数据 ([股piao代码])"
cmd.ExecuteNonQuery()

 

 

再用你自己的方法加载测试

 

关闭表刷新用

StopRedraw

ResumeRedraw


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


加好友 发短信
等级:版主 帖子:5246 积分:33163 威望:0 精华:8 注册:2013/1/17 21:28:00
  发帖心情 Post By:2015/1/3 8:54:00 [只看该作者]

惊人的速度差:

4
144

分页加载,每页30行,分页只需1秒多的时间,全部加载完毕,也仅需数秒。

索引用的恰当,效率太可观。

以前不太重视索引,因为一直没有大数据测试,顶多是几万行,用不用索引,速度上没感觉。

[此贴子已经被作者于2015-1-3 9:00:56编辑过]

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


加好友 发短信
等级:一尾狐 帖子:479 积分:4505 威望:0 精华:0 注册:2008/9/4 14:40:00
  发帖心情 Post By:2015/1/3 16:24:00 [只看该作者]

以下是引用逛逛在2015-1-2 12:47:00的发言:

在命令窗口执行

 

Dim cmd As New SQLCommand
cmd.Connection Name = 数据源名称    ‘记得把Name前面的空格去掉
cmd.CommandText = "Create Index iDate ON 历史数据 ([股piao代码])"
cmd.ExecuteNonQuery()

 

 

再用你自己的方法加载测试

 

关闭表刷新用

StopRedraw

ResumeRedraw


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


加好友 发短信
等级:一尾狐 帖子:479 积分:4505 威望:0 精华:0 注册:2008/9/4 14:40:00
  发帖心情 Post By:2015/1/3 16:33:00 [只看该作者]

以下是引用逛逛在2015-1-2 12:47:00的发言:

在命令窗口执行

 

Dim cmd As New SQLCommand
cmd.Connection Name = 数据源名称    ‘记得把Name前面的空格去掉
cmd.CommandText = "Create Index iDate ON 历史数据 ([股piao代码])"
cmd.ExecuteNonQuery()

 

 

再用你自己的方法加载测试

 

关闭表刷新用

StopRedraw

ResumeRedraw

谢谢逛逛,命令窗口执行的是为(历史数据的[股piao代码]列)创建索引,是吗,执行代码后速度提升到了22万行用时6秒(原来没索引是7万行用时75秒),速度提升了约30倍,太感谢你啦,逛逛,在此建议狐爸要把你这个“创建索引”的代码写进帮助里,因为索引对加载速度影响太大了,现时帮助里面没找到这个。

另外关闭表刷新对加载的速度不明显。
[此贴子已经被作者于2015-1-3 16:41:42编辑过]

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