以文本方式查看主题

-  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()