2011-03-29 88 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列,你的表現收益將是最小的任何方式。我認爲在這一點上更偏好個人喜好。