1.我是为了方便计算任意起始期间任意item的余额的和.请问有在设计上有无更好的设计?   你在表力面加一个时间字段 名称:f4 类型:datetime ,对这个字段建立索引,对 item 也建立索引
  select sum(余额) from table1 where f4>=开始时间 and f4<=结束时间 and item=item22.目前11个月的数据记录是175万行. 
机器环境是,ibm   pc   server,2   CPU,4G内存,sql   server   2K.这样扩张下去2-3年内会否有性能问题? 
为了应对修改之前的单据的变化,我每日计算时,删除最近3个月的记录并重算  这个不好说,要看你的具体应用,求和查询的使用是否频繁 ,并发查询是多少
不过不明白,一年365天 365*2000=73万 ,你怎么有175万数据啊

解决方案 »

  1.   

    1.我是为了方便计算任意起始期间任意item的余额的和.请问有在设计上有无更好的设计? 
    之所以每产品每日的记录,而没去记录发生额以推算,是为了以空间换时间. 
    不知这样合理否. ---索引 
    2.目前11个月的数据记录是175万行. 
    机器环境是,ibm   pc   server,2   CPU,4G内存,sql   server   2K.这样扩张下去2-3年内会否有性能问题? 
    为了应对修改之前的单据的变化,我每日计算时,删除最近3个月的记录并重算. 
    请问有何优化方法?---
    每日的计算为什么前三个月的有关,进行年度结转
      

  2.   

    回arrow_gx:
    Sorry,库存表确实是70多万
    我作count的时候是对的应收余额表了,是同样的策略.
    具体应用的话,这个表应该只算个中间结果,会在每夜处理中在这个表基础上进一步计算出周转天数后提供给客户查询,计算中多用于时间between的sum,因此对这个表进行直接查询的前端应用不多.回happyflystone:
    因为存在改单的情况,所以我假设3个月前的单不会做更改,3个月可以变为6个月或者更长,不想把增量控制做得太复杂.另外,索引是对ctimeid 和item 分别建的好么?btw,仍是那个问题,删和插数据时要drop index,这可以在存储过程里作么?谢谢两位回答.
      

  3.   

    1、另外,索引是对ctimeid   和item   分别建的好么? 
       是的,不过你最好贴出你的语句,这样才好分析用什么索引2、删和插数据时要drop   index,这可以在存储过程里作么
       这个操作是可以在存储过程里面实现的,但是如果数据量大的话,是很费时间的,不明白你为什么要这样做