以文本方式查看主题 - Foxtable(狐表) (http://foxtable.com/bbs/index.asp) -- 专家坐堂 (http://foxtable.com/bbs/list.asp?boardid=2) ---- 读取服务器数据效率的疑问 (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=111737) |
-- 作者:有点辣 -- 发布时间:2017/12/28 15:50:00 -- 读取服务器数据效率的疑问 员工名单有上千人,初始不加载数据。 一份绩效数据(数据量不大,不到百条)要导入系统,里面有员工编号字段 想着通过员工编号来关联员工名单表里的职位、薪金等基础数据 通过代码导入绩效表里的员工编号,然后在datacolchanged事件里用sqlfind来查找员工表的记录 本以为后台查找几千条记录会慢,就先用sq lcom mand,选择性加载所需字段,生成临时表,在临时表里find查找 想着这么会快些,结果发现这样很慢,甚至几秒才出来一条记录 于是改为sqlfind,发现速度挺快,可以接受 我就好奇了,应该是用sq l 语句加载到内存里,再查找会很快呀,怎么反而慢呢? |
-- 作者:有点甜 -- 发布时间:2017/12/28 15:59:00 -- 1、你是每一次查找,都生成临时表?临时表是只需要生成一次的。
2、在afterOpenProject事件或者其它事件,生成一个临时表一次,之后不要重复生成。之后直接用find。
3、使用find肯定比sqlFind要快,而且快很多,这个不可能变。 |
-- 作者:有点辣 -- 发布时间:2017/12/28 16:36:00 -- 是在datacolchanged里写的生成临时表
在导入按钮的单击事件里写sqlc ommand来生成临时表的话,怎么在datacolchanged事件里引用呢? |
-- 作者:有点甜 -- 发布时间:2017/12/28 17:04:00 -- 以下是引用有点辣在2017/12/28 16:36:00的发言:
是在datacolchanged里写的生成临时表
在导入按钮的单击事件里写sqlc ommand来生成临时表的话,怎么在datacolchanged事件里引用呢?
用一个全局变量记录即可,如
vars("临时表") = cmd.ExecuteReader() |