日期:2014-05-17  浏览次数:20437 次

帮忙看看这个功能如何实现?
使用的是SQL SERVER,现在在做一个快递的货品跟踪功能,也就是每一条记录做一个状态跟踪,我现在的做法是该记录一旦状态有变化,我就把订单号,状态,时间插入到另外一张状态表,一个记录从开始到结束就有10状态(有时候可能有10多个状态)。
所以1条记录就对应10个状态,也即是状态表里面插入10条记录。

如果有10万条记录的话,那么状态表就有100万条记录,这样数据量我觉得太庞大了。请问有没有什么好的办法?


------解决方案--------------------
个人给些浅见:
1、如果你要记录每个单据大量信息,那么100万条不算多,但是要注意定期归档(比如把旧数据移到一些历史数据库中保存,减少现在数据库过于庞大的可能。)我目前从事的erp系统,也是一个货号对应很多明细数据,大概也有1:6左右。目前问题都不大,明细表已经到达2000万了。
一般的设计来说,主表尽量保存一次性显示给客户的数据就可以了,如果客户想要查看更详细的信息,才关联明细记录。
2、如果你只记录极其少量的信息,比如仅仅一个状态及变更日期可以尝试融合到主表的某些字段。可以考虑把日期、状态和其他信息用一个xml列来保存,新版数据库支持xml的索引,所以性能方面可以不用太担心,不过表的大小可能会比较大。