ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: zhaogang1960

[讨论] SQL顺序连接多个工作簿速度的疑问,解释合理加技术分2分

  [复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-3-11 12:39 | 显示全部楼层
本帖最后由 zhaogang1960 于 2014-3-11 12:40 编辑
没名字了 发表于 2014-3-11 12:30
我把文件复制到两个文件夹里面对两个过程分别单独运行,然后清除更新内容,再保存,运行过程1的文件大小没有 ...

你的意思是经过SQL查询后,会修改数据源文件?我把52个待查询工作簿全部修改为只读,测试效果没有任何变化

TA的精华主题

TA的得分主题

发表于 2014-3-11 12:46 | 显示全部楼层
肯定和文件没干系了  都只做了选择查询 怎么可能改文件 他说的缓存问题 不存在的 ado连接是读取进内存 我试过连接后改变原文不重新连的话
cnn里还是之前文件的内容

TA的精华主题

TA的得分主题

发表于 2014-3-11 12:56 | 显示全部楼层
越测试越奇葩 怕只有微软知道是怎么回事了吧 不研究了 这技巧倒是可以记住了

TA的精华主题

TA的得分主题

发表于 2014-3-11 12:57 | 显示全部楼层
zhaogang1960 发表于 2014-3-11 12:39
你的意思是经过SQL查询后,会修改数据源文件?我把52个待查询工作簿全部修改为只读,测试效果没有任何变化 ...

不是修改数据源,是你的读取文件,你的文件初始大小是30.5kb,单独运行过程1后删除查询结果保存,文件大小不变,单独运行2的时候,删除查询结果保存后,文件大小是32.5kb,你可以实验

TA的精华主题

TA的得分主题

发表于 2014-3-11 12:58 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
百度不到去谷歌 发表于 2014-3-11 12:46
肯定和文件没干系了  都只做了选择查询 怎么可能改文件 他说的缓存问题 不存在的 ado连接是读取进内存 我试 ...

请理解我的说法,并按照我说的实验去做。还有,你可以在U盘上打开,看看速度差的变化。

TA的精华主题

TA的得分主题

发表于 2014-3-11 13:01 | 显示全部楼层
本帖最后由 百度不到去谷歌 于 2014-3-11 13:03 编辑
没名字了 发表于 2014-3-11 12:58
请理解我的说法,并按照我说的实验去做。还有,你可以在U盘上打开,看看速度差的变化。

我的意思是 在我的本机运行 那么本机的所有运行环境都完全一样 而代码微小改变导致的同一环境运行时间的较大差距 这肯定不是硬件原因了我在做测试的时候 写入数据步骤全都没有要 甚至写入数组的过程都没要 运行时间的差异一样存在

TA的精华主题

TA的得分主题

发表于 2014-3-11 13:04 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
速度差的问题,可以在U盘上做实验,或者用U32打开分别运行过程1和2清空保存的文件,看看是否有空白区被填写。我的理解是,微软在程序里保留了一部分数据缓冲区(就像一个空白的sheet)平时以0填充,在需要缓存的时候将数据填充到这里(作用是节省内存,防止系统崩溃)。这也是保存后两表大小的差异。至于速度,内存的速度远快于硬盘的速度,循环次数的增加决定了,速度差的扩大。硬件之间的速度差是恒定的,所以我前面的表里的数据单位差也基本恒定。

TA的精华主题

TA的得分主题

发表于 2014-3-11 13:11 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
没名字了 发表于 2014-3-11 13:04
速度差的问题,可以在U盘上做实验,或者用U32打开分别运行过程1和2清空保存的文件,看看是否有空白区被填写 ...

问题是 只是连接文件不执行任何查询为什么速度是最慢的 实在是无法理解啊

TA的精华主题

TA的得分主题

发表于 2014-3-11 13:16 | 显示全部楼层
弄不明白!!

不过对于这种循环打开,建议 set cnn 这些语句应该写在循环外面,或许Provider都应该写在外面,使用with语句

创建记录集后速度就快,这真是有些奇怪。
是不是可以这样理解
看大门的见有人给了正确的敲门信号后打开大门,见进来的人出去后就立即锁上大门,如果只听到敲门声不见人进来出去,他就不知道关上门

以上是自己主观臆断胡说,当个笑话看哈!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2014-3-11 13:17 | 显示全部楼层
没名字了 发表于 2014-3-11 12:57
不是修改数据源,是你的读取文件,你的文件初始大小是30.5kb,单独运行过程1后删除查询结果保存,文件大小 ...

程序1和程序3比较,前者有查询,速度很快,后者只有连接,没有查询,速度很慢
程序3没有查询,当然就不可能改变本工作簿的大小了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 01:54 , Processed in 0.035299 second(s), 7 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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