以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.net/bbs/index.asp)
--  专家坐堂  (http://foxtable.net/bbs/list.asp?boardid=2)
----  [讨论] Sql 库存统计的2种方法,你更看中哪种?  (http://foxtable.net/bbs/dispbbs.asp?boardid=2&id=27020)

--  作者:qq121454970
--  发布时间:2012/12/20 8:22:00
--  [讨论] Sql 库存统计的2种方法,你更看中哪种?
前提:有订单明细表和库存表,库存表的库存数量是根据订单明细表统计出来的,且只有订单明细表已审核的数据才会参与计算。 方法一:用Sql统计语句统计,效率慢,使用方便。我用50万行数据测试(本机swl),筛选条件有3个,分别统计50万行其中的3列数据,共耗时16秒。不知用互联网数据库速度怎么样? 方法二:每审核或反审核订单明细表中得数据行,就在库存表中的相关库存减去其数量。效率高,使用频繁。耗时少。 欢迎大家提出建议。或者有更好的方法。欢迎批评指正……
--  作者:lihe60
--  发布时间:2012/12/20 8:31:00
--  

第二种方法有不好。


--  作者:qq121454970
--  发布时间:2012/12/20 9:01:00
--  
此话怎讲……15秒,有木有感觉时间长了点呢?
--  作者:lin_hailun
--  发布时间:2012/12/20 9:07:00
--  
以下是引用qq121454970在2012-12-20 9:01:00的发言:
此话怎讲……15秒,有木有感觉时间长了点呢?


结合方法一和方法二,如果查询的时间比较长,试着去优化一下你的查询语句。

你可以记录一个库存的缓存,用这个数值增减,空闲的时候再去获取实际的库存值便可。

--  作者:qtcks
--  发布时间:2012/12/20 15:16:00
--  
图片点击可在新窗口打开查看第二总方法改进下,月结时审核的订单明细与库存总表进行结算。
库存统计的时候,采取上次发生+本期发生。
这样合理些。

--  作者:qq121454970
--  发布时间:2012/12/21 12:25:00
--  
晕,我今天写了100万订单明细,用我的代码分开统计3列(估计跟统计300万行订单的一列数据速度差不多),用我的代码统计花了近30秒……刚刚用统计分组统计(采用后台统计,),统计完成只花了2.7秒……,真心伤不起,这相差也太大了……
--  作者:lin_hailun
--  发布时间:2012/12/21 13:36:00
--  
以下是引用qq121454970在2012-12-21 12:25:00的发言:
晕,我今天写了100万订单明细,用我的代码分开统计3列(估计跟统计300万行订单的一列数据速度差不多),用我的代码统计花了近30秒……刚刚用统计分组统计(采用后台统计,),统计完成只花了2.7秒……,真心伤不起,这相差也太大了……


能否导出具体数据给大家测试?这样才能帮到你怎么去统计和优化。

--  作者:zerov
--  发布时间:2012/12/21 13:57:00
--  

怎么相关这么大呢?

 

 


--  作者:菲舍尔
--  发布时间:2012/12/21 16:06:00
--  
用狐表的分组统计(后台统计)是目前我发现最快的方法
--  作者:sunsenfeng
--  发布时间:2012/12/21 16:46:00
--  
不同方法效率差别却是挺大,就像是Excel中,如果整行复制数据,复制许多行跟读入数组再写入数据相比,效率要十倍甚至几十倍差距