现在的表结构和内容大致如下:
管理CD 商品CD 日期        类别    数量    已使用数量 原价
10001  001    2010/01/01  入库    100     20         15
10002  001    2010/01/02  入库    200     0          16
10003  001    2010/01/03  入库    300     0          17
10004  001    2010/01/04  入库    400     0          18
10005  001    2010/01/05  入库    500     0          19
10006  001    2010/01/06  出库    200     0          
10007  001    2010/01/07  出库    500     0          管理CD是不可重复的KEY,存储过程要计算入库的已使用数量和出库的原价,计算
方法如下:
2010/01/06的出库200件,先取2010/01/01的剩余80件,再从2010/01/02取120件,
所以2010/01/06的原价为(80*15+120*16)/200,更新后2010/01/01的已使用数量
为100,2010/01/02的已使用数量为120。2010/01/07的出库500件,先取2010/01/02的剩余80件,再从2010/01/03取300件,
再从2010/01/04取120件,所以2010/01/07的原价为(80*16+300*17+120*18)/500
更新后2010/01/02的已使用数量为200,2010/01/03的已使用数量为300,
2010/01/04的已使用数量为120
现在我写的存储过程是两层循环去更新数据,外层循环取出出库数据,内层循环取
出入库数据进行更新,但是客户的数据一天的入库出库就有上万条,这样的话,存
储过称要执行10小时左右,显然不能满足需求,请问大家有什么好的方法吗?

解决方案 »

  1.   

    首先确定你效率不高是数据更新花费的时间?还是外层取数据话费的,什么原因造成的!个人感觉,循环的效率低,先计算出可以批量更新(即可以批量出库单的)的入库管理CD,然后不足的量再进行下个入库CD进行计算.效率应该会高
      

  2.   

    仅仅是内层循环的倒不花时间,
    但是一条出库记录需要执行N次update入库记录,这就很有问题。
    建议摆在ERP系统上,改好数据后一次更新。
      

  3.   

    可以考虑再建两个表
    一个是库存表 主要字段如下
    商品CD 最小管理CD  剩余数量 还有一个库存明细表
    管理CD 商品CD 日期 数量 已使用数量 原价入库操作的时候写入库存明细表,更新库存表
    出库操作的时候更新库存明细表和库存表如果索引合适的话应该不会太慢的