2010-11-16 33 views
0

在数据库中有大约40-50列的表是否正常?在数据库中有大约40-50列的表是否正常?

+2

退房http://stackoverflow.com/questions/489003/sql-optimization-how-many-columns-on-a-table - 你应该得到你在这个问题上回答的大部分问题 – InSane 2010-11-16 10:18:47

+1

此外,相关的问题是HTTP://计算器。com/questions/331323/how-many-columns-are-too-many-for-a-sql-2005-table – InSane 2010-11-16 10:20:21

回答

2

取决于您的数据模型。将数据分解为多个表格并将它们相互关联起来会有点“更加简洁”,但它也可能是可能的,因为您的数据可能无法或者没有意义的被分解。

如果你想有更少的列只是“为它的缘故”,并没有显著的性能下降 - 没有这个必要。如果您发现自己使用的列数少于表格中的数量,请将其分解...

0

取决于你所说的正常。如果你是一个大企业公司,这是不正常的,因为你有太少的专栏。

但是,如果你发现很难与许多列工作,你可能有问题,需要做一些事情:无论是抽象的多列离开或拆分数据模型的东西更容易管理。

1

这是不寻常的待去归一化的数据库,以提高性能:改写(munging)表一起导致更少的查询过程中加入。

所以去归一化的表往往有更多的列,以及重复数据可以成为一个问题,但有时这是得到你所需要的性能的唯一途径。

我好像被问这个问题,在每一次面试时,我去:

你什么时候会denormalise数据库?

0

这听起来不太规范,所以您可能想看看this。但它确实取决于你存储我想什么...

+2

没有更多的信息,你不能真正的说表格没有被标准化。 – Thilo 2010-11-16 10:25:57

0

我不知道“正常”,但它不应该造成任何问题。如果你有很多“可选”列,大多数时候这些列是空的,或者很多字段非常大,而且不经常查询,那么模式可能会被标准化或调整得更多一些,但是列数本身不是问题。

1

是的,如果这40-50列全都依赖于密钥,整个密钥以及除表的密钥外。

+0

如果这些列很大且很少被查询(垂直分区),您可能仍然希望打破(规范化)表的性能原因。 – Thilo 2010-11-16 10:28:37

+0

你可能会这样做,但是你可能会在一个有5列的表中做这件事。 40或50并不是一个巨大的数字。 – 2010-11-16 10:29:57

0

列数与数据是否规范化没有关系。这是列会告诉你的内容。电话1,电话2,电话3是否为 ?那么桌子肯定没有正常化,应该分解。但如果它们都是与关键值完全一致的不同项目,则可以将40-50列标准化。

这并不意味着你总是希望将它们存储在一张表中。如果这些列的组合大小大于数据库中每行数据所允许的实际字节数,则最好在创建两个或多个表之间建立一对一的关系。否则,如果所有字段都处于或接近其最大大小,则存储数据时会遇到问题。如果大部分时间不需要某些字段,也可以使用单独的表格。

相关问题