以文本方式查看主题

-  Foxtable(狐表)  (http://foxtable.com/bbs/index.asp)
--  专家坐堂  (http://foxtable.com/bbs/list.asp?boardid=2)
----  [求助]当数据量较大时,哪种表结构更好?  (http://foxtable.com/bbs/dispbbs.asp?boardid=2&id=40979)

--  作者:loongtai
--  发布时间:2013/10/8 15:43:00
--  [求助]当数据量较大时,哪种表结构更好?
准备设计一个物料参数表,由于不同的物料其表征参数的数量不一样,有的只要3个、4个,有的可能需要10个。有两种设计方法:
设计1:

图片点击可在新窗口打开查看此主题相关图片如下:截图00.png
图片点击可在新窗口打开查看
设计2:

图片点击可在新窗口打开查看此主题相关图片如下:截图01.png
图片点击可在新窗口打开查看
设计1的好处在于每个物料只占一行,缺点是列数固定,不可添加。
设计2列数少且参数可动态增加,但是每个物料占用的行数成倍增加。
如果数据少,我想这些都不是问题。但是如果按设计1的方法数据有上万行甚至几十万行时,此时从占用容量、数据查找速度方面来看哪种设计方法会更好些?


--  作者:Bin
--  发布时间:2013/10/8 16:00:00
--  
很明显 设计2 更加科学,更加符合数据库的表设计.  
--  作者:loongtai
--  发布时间:2013/10/8 16:07:00
--  
我问了一个同事,他告诉我如果按照2的设计,其查找速度相比1会慢很多。假如按设计1有10W行数据,转化成设计2有80W行数据,当查找某个物料参数时2的查找工作量是1的8倍。不知他的这种说法对不对?当数据行特别多的时候,2的这种设计对查询速度影响大不大?
--  作者:qq121454970
--  发布时间:2013/10/8 16:09:00
--  

查询速度很快的,明显第二个合理


--  作者:jspta
--  发布时间:2013/10/8 16:29:00
--  
以下是引用loongtai在2013-10-8 16:07:00的发言:
我问了一个同事,他告诉我如果按照2的设计,其查找速度相比1会慢很多。假如按设计1有10W行数据,转化成设计2有80W行数据,当查找某个物料参数时2的查找工作量是1的8倍。不知他的这种说法对不对?当数据行特别多的时候,2的这种设计对查询速度影响大不大?

那要看你什么数据库了,如果是ACCESS的效率可能下降很多。

实际上第一张表占用的大小并不比第二张表大多少。从数据库角度来说,第二张表扩展性更好

 

实时上,还有另一种设计方法(也很流行,忘记叫什么了),如参数1:a,参数2:b,参数3:c

设计成

名称   参数

A      a|b|C

 

这种设计占用小效率高,你可以试试


--  作者:lsy
--  发布时间:2013/10/8 16:40:00
--  
以下是引用jspta在2013-10-8 16:29:00的发言:

那要看你什么数据库了,如果是ACCESS的效率可能下降很多。

实际上第一张表占用的大小并不比第二张表大多少。从数据库角度来说,第二张表扩展性更好

 

实时上,还有另一种设计方法(也很流行,忘记叫什么了),如参数1:a,参数2:b,参数3:c

设计成

名称   参数

A      a|b|C

 

这种设计占用小效率高,你可以试试

多值字段。


--  作者:jspta
--  发布时间:2013/10/8 17:14:00
--  
以下是引用lsy在2013-10-8 16:40:00的发言:

多值字段。

不是指多值字段,有个很专业的名称,以前见到过的,暂时百度搜不到。


--  作者:程兴刚
--  发布时间:2013/10/8 18:37:00
--  
在一列的行里面查询,显然比多列里面查找行快多了!
--  作者:有点甜
--  发布时间:2013/10/8 19:16:00
--  
 如果确定列的个数的话,就用第一种方法吧。10个也不算多,几十上百个列的项目也很多。
--  作者:反思
--  发布时间:2013/10/8 22:27:00
--  
我也觉得如果参数是固定的,或者预留1~2作为备用列
在后面的统计中采用设计一会简单一些。
如果物料不多,个人觉得采用设计一比较方便。