日期:2014-05-18  浏览次数:20470 次

有一个基础的问题
比如单据有:进仓单、销售单、调拨单、盘点单、借入单、借出单、采购订单、销售订单、采购退货单、销售退货单,设计数据库的表有两种做法:
第一种,只设计一个主从表,10个单据放在一个主从表,在主表里用一个字段区分10个单据

第二种,有多少的单据就设计多少对主从表,比如上面有10个单据,就要设计10对主从表,一共有20个表


问题1:如果用第一种方法,假如主从表有200万数据,要查询统计进仓单时,就要从200万数据里取,速度是不是很慢,如果用第二种方法来做会不会好一点

问题2:以前我用第一种方法时,主从表有200万数据,在A客户端查询,在B客户端也在查询,如果 A先查询的话,那么B有时就要等待A查询完,才可以在B上查询;这是因为当A查询时,服务器上的cpu占用率100%,A查询一旦结束时,B才可以查询。
现想改为第二种方法,会不会出现这个问题呢?

------解决方案--------------------
1.每种单据的列是不相同的.即使你现在设置成相同,未来肯定会有变化.
2.查询时肯定是经常按照单据类型来查询.第一种方法影响查询效率,且无法通过特别有效的方法来提高效率,第二种则没有这个问题.
------解决方案--------------------
第二种方法可能没有第一种方法设计sql时简单,但效率肯定会提高,不过100%是不是你的数据没有索引?还是sql本身有值得优化的地方?
------解决方案--------------------
数据量肯定会越来越多,还是第二个方案好些,另外可以把几个表合并一下,比如借入和借出为一个表,用列值区分开~!
------解决方案--------------------
不管是後期維護,查詢,都應該優先第一個,不可能說有多少种類型就建多少表,這樣你的報表,form就太死了沒有靈活性

速度慢應該優化sql 和在數據存儲上作文章
------解决方案--------------------
我觉得如果单据种类不是特别多,就用第二种,
如果是单据种类忒别多,就择中,把单据分类,建几种类型

我个人认为如果就10来种,建10个表也行后面维护也方便
太多了就不好了,放到一张表反而好