以文本方式查看主题 - Foxtable(狐表) (http://foxtable.net/bbs/index.asp) -- 专家坐堂 (http://foxtable.net/bbs/list.asp?boardid=2) ---- [讨论]关于2014关于后台数据的处理的效率问题 (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=46702) |
-- 作者:don -- 发布时间:2014/2/27 11:46:00 -- [讨论]关于2014关于后台数据的处理的效率问题 我有一段代码,用在窗口AfterLoad中,涉及三表,共12处用了Find,Select,GetComboListString, 今天把这些Find,Select,GetComboListString直接改为:SQLFind,SQLSelect,SQLGetComboListString, 结果: 没改动前 ----> 1秒 改动后 ------> 18秒 后用临时表加载三表, 再用Find,Select,GetComboListString, 效率 为 1秒! 看来不能简单化用这个后台数据的处理 是否每次SQLFIND什么的都先加载数据到临时表,再寻找?
|
-- 作者:唐尸三摆手 -- 发布时间:2014/2/27 11:48:00 -- 情况就是这么个情况,访问后台是需要时间的! |
-- 作者:lsy -- 发布时间:2014/2/27 11:49:00 -- 有类似的感觉。 |
-- 作者:y2287958 -- 发布时间:2014/2/27 11:54:00 -- 同感 |
-- 作者:supwork -- 发布时间:2014/2/27 11:55:00 -- 用临时表加载三表 你用时多少 |
-- 作者:程兴刚 -- 发布时间:2014/2/27 11:59:00 -- Find,Select,GetComboListString \'从datatable已经加载的数据记录中找符合条件的数据; SQLFind,SQLSelect,SQLGetComboListString \'从数据库后台找符合条件的数据;
二者有本质的区别,有时间差是必然。 |
-- 作者:don -- 发布时间: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() |
-- 作者:狐狸爸爸 -- 发布时间:2014/2/27 12:05:00 -- 这个差别,就是从互联网下载一个10M的文件和本机复制一个10M文件的差别,是正常的。
全部加载还是后台处理,必须综合考虑。
但是数据量不大,且反复调用的数据,肯定应该一次性加载进来的,特别是网速不快的时候,否则后果就是反复从互联网下载这个10M的文件一样。
[此贴子已经被作者于2014-2-27 12:05:33编辑过]
|
-- 作者:blackzhu -- 发布时间:2014/2/27 13:01:00 -- 但是加载数据进来也是需要时间的,另外一个用SQL可以获取最新的数据. |
-- 作者:jspta -- 发布时间:2014/2/27 13:08:00 -- 今天把这些Find,Select,GetComboListString直接改为:SQLFind,SQLSelect,SQLGetComboListString, 我觉得最大可能的原因在循环体内大量的使用SQLFIND,SQLSelect, 相当于执行了n次SQL语句,速度怎么会比得上直接加载在内存中的速度? 个人觉得这些方法以校验数据为主,直接在内存中操作,不适合反复使用 [此贴子已经被作者于2014-2-27 13:12:28编辑过]
|