以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  优化  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=128014)

--  作者:hbhb
--  发布时间:2018/11/27 10:11:00
--  优化
大师:为何加了一个红色条件,效率降低10倍,如何优化?
dfhj = t1.Compute("sum(贷方)","凭证号 = \'" & pz & "\'")

dfhj = t1.Compute("sum(贷方)","凭证号 = \'" & pz & "\'" & " and 对方科目 is null")   



--  作者:hbhb
--  发布时间:2018/11/27 10:19:00
--  
而且就循环100多次,什么原因?
--  作者:有点甜
--  发布时间:2018/11/27 10:35:00
--  
具体实例发上来测试。
--  作者:hbhb
--  发布时间:2018/11/27 10:49:00
--  
For Each pz As String In pzh


        dfhj = t1.Compute("sum(贷方)","凭证号 = \'" & pz & "\'" & " and 对方科目 is null")

\'dfhj = t1.Compute("sum(贷方)","凭证号 = \'" & pz & "\'")

Next

就以上简单的代码,t1表有10000多行,pzh集合数量100,就这些凭证中对方科目有空值,为何如此慢,用统计表快得很?

--  作者:hbhb
--  发布时间:2018/11/27 11:13:00
--  
图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看图片点击可在新窗口打开查看
--  作者:hbhb
--  发布时间:2018/11/27 11:33:00
--  
当10000多行数据,就是简单的循环100多次用select 或compute,都要几秒。什么玩意?
--  作者:有点甜
--  发布时间:2018/11/27 12:07:00
--  

1、compute统计的时候,条件越复杂,就越慢的。不要纠结这些。

 

2、效率问题,看看这一章 http://www.foxtable.com/webhelp/scr/2226.htm

 

3、如果要优化效率那就尽量自己写统计的代码。