2011-03-29 49 views
1

我有一个表有11列,现在大多数时候这个表上的三列将是空的,但如果我分成两个,每个表中有更多的查询。你的建议是什么该表应该分成两部分吗?

+1

@ user658911:现在的结构是否会遇到一些问题? – zerkms 2011-03-29 23:21:40

+0

不,但要提高可伸缩性和可靠性 – Vish 2011-03-29 23:42:10

+0

@ user658911:如果它的工作原理 - 不要改变它 – zerkms 2011-03-29 23:45:40

回答

2

还有一些其他变量需要考虑。有些想到的是:

  • 表格有多大?
  • 三列通常是空的有多大?
  • 什么类型的查询使用该表?
  • 列中的数据类型是什么?例如,如果它属于查找表中,那么避免重复数据可能是有意义的。这个问题不一定与问题密切相关,但值得考虑。
  • 字段索引(或在任何索引中使用)?如果是这样,它可能会增加INSERTS和DELETES的成本(如果它们是空的并且在UPDATE操作期间保持不变,则不会太多)。

一般来说,虽然我会说,把它作为一个单独的表是没问题的。 11列并不是那么多。因此,除非表格非常大(相对术语)并且空间非常重要,否则单个表格的简单性是一个好主意,特别是如果数据在逻辑上属于表格。

+0

该表包含大约50,000条每秒更新100条记录。三列中的两列是int,一个是浮点数。三列包含视图,点击,ctr。 – Vish 2011-03-29 23:35:42

+0

根据这些信息,我认为离开表格是有意义的。数据似乎是相关的,并且(假设float为4个字节),那么节省的12个字节是最小的,并且可能对更新没有什么影响。它可能会增加INSERTS的成本,但可能不值得将数据移动到另一个表的麻烦。但是,如果这些字段被索引,它可能会有所作为。我会添加一些关于这个答案的信息。 – 2011-03-29 23:42:32

1

如果你主要关心的是速度,那么将表保持在一起会给你更便宜的SELECT查询,因为你不会加入JOIN。

+0

好吧,我会说**取决于**很多事实**。更少的表格更适合内存,因此会更快。 – zerkms 2011-03-29 23:23:08

1

就我个人而言,我认为有11列,你的表现收益将是最小的任何方式。我认为在这一点上更偏好个人喜好。