以文本方式查看主题 - 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中,如果整行复制数据,复制许多行跟读入数组再写入数据相比,效率要十倍甚至几十倍差距 |