Foxtable(狐表)用户栏目专家坐堂 → [讨论]关于2014关于后台数据的处理的效率问题


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

主题:[讨论]关于2014关于后台数据的处理的效率问题

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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
[讨论]关于2014关于后台数据的处理的效率问题  发帖心情 Post By:2014/2/27 11:46:00 [只看该作者]

我有一段代码,用在窗口AfterLoad中,涉及三表,共12处用了Find,Select,GetComboListString,
今天把这些Find,Select,GetComboListString直接改为:SQLFind,SQLSelect,SQLGetComboListString,

结果:

没改动前 ----> 1秒
改动后 ------> 18秒

后用临时表加载三表, 再用Find,Select,GetComboListString, 效率 为 1秒!

看来不能简单化用这个后台数据的处理
是否每次SQLFIND什么的都先加载数据到临时表,再寻找?

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


加好友 发短信
等级:四尾狐 帖子:928 积分:7769 威望:0 精华:13 注册:2008/9/1 11:58:00
  发帖心情 Post By:2014/2/27 11:48:00 [只看该作者]

情况就是这么个情况,访问后台是需要时间的!

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


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

有类似的感觉。

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


加好友 发短信
等级:狐神 帖子:4752 积分:34568 威望:0 精华:0 注册:2008/8/31 22:44:00
  发帖心情 Post By:2014/2/27 11:54:00 [只看该作者]

同感

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


加好友 发短信
等级:三尾狐 帖子:688 积分:4903 威望:0 精华:0 注册:2013/10/27 17:14:00
  发帖心情 Post By:2014/2/27 11:55:00 [只看该作者]

用临时表加载三表 你用时多少

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


加好友 发短信 一级勋章
等级:超级版主 帖子:7258 积分:40773 威望:0 精华:16 注册:2008/8/31 23:23:00
  发帖心情 Post By:2014/2/27 11:59:00 [只看该作者]

Find,Select,GetComboListString      '从datatable已经加载的数据记录中找符合条件的数据;

SQLFind,SQLSelect,SQLGetComboListString  '从数据库后台找符合条件的数据;

 

二者有本质的区别,有时间差是必然。


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


加好友 发短信
等级:八尾狐 帖子:1812 积分:12999 威望:0 精华:14 注册:2008/10/11 18:07:00
  发帖心情 Post By:2014/2/27 12:00:00 [只看该作者]

以下是引用supwork在2014-2-27 11:55:00的发言:
用临时表加载三表 你用时多少
没测试,我这样用:Dim dht1,Dcc2,dly3 As DataTable
cmd1.CommandText = "SELECT * From {合約管理}"
Dht1 = cmd1.ExecuteReader()
cmd1.CommandText = "SELECT * From {倉庫}"
Dcc2 = cmd1.ExecuteReader()
cmd1.CommandText = "SELECT * From {倉類型}"
Dly3 = cmd1.ExecuteReader()


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


加好友 发短信
等级:管理员 帖子:47497 积分:251403 威望:0 精华:91 注册:2008/6/17 17:14:00
  发帖心情 Post By:2014/2/27 12:05:00 [只看该作者]

这个差别,就是从互联网下载一个10M的文件和本机复制一个10M文件的差别,是正常的。

 

全部加载还是后台处理,必须综合考虑。

 

但是数据量不大,且反复调用的数据,肯定应该一次性加载进来的,特别是网速不快的时候,否则后果就是反复从互联网下载这个10M的文件一样。

 

 

[此贴子已经被作者于2014-2-27 12:05:33编辑过]

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


加好友 发短信 一级勋章
等级:狐仙 帖子:9879 积分:57634 威望:0 精华:15 注册:2008/9/1 9:45:00
  发帖心情 Post By:2014/2/27 13:01:00 [只看该作者]

但是加载数据进来也是需要时间的,另外一个用SQL可以获取最新的数据.

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


加好友 发短信
等级:七尾狐 帖子:1732 积分:11266 威望:0 精华:0 注册:2011/12/15 22:06:00
  发帖心情 Post By:2014/2/27 13:08:00 [只看该作者]

今天把这些Find,Select,GetComboListString直接改为:SQLFind,SQLSelect,SQLGetComboListString,

我觉得最大可能的原因在循环体内大量的使用SQLFIND,SQLSelect,
相当于执行了n次SQL语句,速度怎么会比得上直接加载在内存中的速度?
个人觉得这些方法以校验数据为主,直接在内存中操作,不适合反复使用

[此贴子已经被作者于2014-2-27 13:12:28编辑过]

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