以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [求助] 数据加载速度优化--甜版请进 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=62440) |
|
-- 作者:Gryvip -- 发布时间:2015/1/1 1:33:00 -- [求助] 数据加载速度优化--甜版请进 甜版,你好,有个问题想请教你; 本地外部数据源Access,有约600万条记录,加载其中约7万行数据,用时75秒,正常吗,可以以提升速度吗,请抽空赐教,谢谢。 Access数据文件450MB,就不上传文件了,代码如下: 初始加载表不加载数据,加载按钮代码如下:(其中变量内容:sh000001,sh600489,……,由30多个不同的股票代码组成) DataTables("历史数据").LoadFilter = "[股票代码] in ("& Functions.Execute("HS加载股票") &")" DataTables("历史数据").Load [此贴子已经被作者于2015-1-1 1:34:34编辑过]
|
|
-- 作者:飞飞 -- 发布时间:2015/1/1 4:52:00 -- 想不到好办法 |
|
-- 作者:lsy -- 发布时间:2015/1/1 8:04:00 -- DataTables("历史数据").LoadFilter = "[股票代码] in ("& Functions.Execute("HS加载股票") &")" 这个in 就注定了,肯定慢。 我这里有5万5千条数据,60列,从分页到全部加载完毕,用时不到7秒。 加载速度除了与记录条数有关,与列数关系也很大,不知道你有多少列。 请把全部数据压缩后,通过网盘发上来,正需要大数据测试。
|
|
-- 作者:Gryvip -- 发布时间:2015/1/1 14:41:00 -- 列数不多,只有9列,如果不用in ,还有其他更好的方法吗?或把你7秒的代码贴上来,谢谢! Access数据文件压缩后129MB,已上传网盘(提取码:e340):http://yunpan.cn/cyj26pk7j4tz4 [此贴子已经被作者于2015-1-1 15:15:26编辑过]
|
|
-- 作者:游 -- 发布时间:2015/1/1 21:58:00 -- 1、在数据库中 给 历史数据的 股票代码 设置重复索引 2、加载时关闭表刷新和自动列宽
|
|
-- 作者:Gryvip -- 发布时间:2015/1/2 12:15:00 --
|
|
-- 作者:逛逛 -- 发布时间:2015/1/2 12:47:00 -- 在命令窗口执行
Dim cmd As New SQLCommand
再用你自己的方法加载测试
关闭表刷新用 StopRedraw ResumeRedraw |
|
-- 作者:lsy -- 发布时间:2015/1/3 8:54:00 -- 惊人的速度差: 4秒 144秒 分页加载,每页30行,分页只需1秒多的时间,全部加载完毕,也仅需数秒。 索引用的恰当,效率太可观。 以前不太重视索引,因为一直没有大数据测试,顶多是几万行,用不用索引,速度上没感觉。 [此贴子已经被作者于2015-1-3 9:00:56编辑过]
|
|
-- 作者:Gryvip -- 发布时间:2015/1/3 16:24:00 -- 以下是引用逛逛在2015-1-2 12:47:00的发言:
在命令窗口执行
Dim cmd As New SQLCommand
再用你自己的方法加载测试
关闭表刷新用 StopRedraw ResumeRedraw |
|
-- 作者:Gryvip -- 发布时间:2015/1/3 16:33:00 -- 以下是引用逛逛在2015-1-2 12:47:00的发言:
谢谢逛逛,命令窗口执行的是为(历史数据的[股票代码]列)创建索引,是吗,执行代码后速度提升到了22万行用时6秒(原来没索引是7万行用时75秒),速度提升了约30倍,太感谢你啦,逛逛,在此建议狐爸要把你这个“创建索引”的代码写进帮助里,因为索引对加载速度影响太大了,现时帮助里面没找到这个。在命令窗口执行
Dim cmd As New SQLCommand
再用你自己的方法加载测试
关闭表刷新用 StopRedraw ResumeRedraw 另外关闭表刷新对加载的速度不明显。
[此贴子已经被作者于2015-1-3 16:41:42编辑过]
|