我有一個表有11列,現在大多數時候這個表上的三列將是空的,但如果我分成兩個,每個表中有更多的查詢。你的建議是什麼該表應該分成兩部分嗎?
回答
還有一些其他變量需要考慮。有些想到的是:
- 表格有多大?
- 三列通常是空的有多大?
- 什麼類型的查詢使用該表?
- 列中的數據類型是什麼?例如,如果它屬於查找表中,那麼避免重複數據可能是有意義的。這個問題不一定與問題密切相關,但值得考慮。
- 字段索引(或在任何索引中使用)?如果是這樣,它可能會增加INSERTS和DELETES的成本(如果它們是空的並且在UPDATE操作期間保持不變,則不會太多)。
一般來說,雖然我會說,把它作爲一個單獨的表是沒問題的。 11列並不是那麼多。因此,除非表格非常大(相對術語)並且空間非常重要,否則單個表格的簡單性是一個好主意,特別是如果數據在邏輯上屬於表格。
該表包含大約50,000條每秒更新100條記錄。三列中的兩列是int,一個是浮點數。三列包含視圖,點擊,ctr。 – Vish 2011-03-29 23:35:42
根據這些信息,我認爲離開表格是有意義的。數據似乎是相關的,並且(假設float爲4個字節),那麼節省的12個字節是最小的,並且可能對更新沒有什麼影響。它可能會增加INSERTS的成本,但可能不值得將數據移動到另一個表的麻煩。但是,如果這些字段被索引,它可能會有所作爲。我會添加一些關於這個答案的信息。 – 2011-03-29 23:42:32
如果你主要關心的是速度,那麼將表保持在一起會給你更便宜的SELECT查詢,因爲你不會加入JOIN。
好吧,我會說**取決於**很多事實**。更少的表格更適合內存,因此會更快。 – zerkms 2011-03-29 23:23:08
就我個人而言,我認爲有11列,你的表現收益將是最小的任何方式。我認爲在這一點上更偏好個人喜好。
- 1. 我應該將組織表分成兩個表嗎?
- 2. 我應該把這個表分成兩個嗎?
- 3. 應該FindUsersByName包含部分匹配嗎?
- 4. 什麼應該/不應該成爲行動的一部分?
- 5. 我應該將這個Django項目分成兩個項目嗎?
- 6. 什麼時候DB表應該分成兩個單獨的表?
- 7. 我應該將表格分成多個表格嗎?
- 8. 我應該將五星級評分換成10分排名嗎?
- 9. 我應該避免多部分/表單請求嗎?
- 10. 我應該通過partials渲染表單的可選部分嗎?
- 11. 我應該把一個更大的mysql表分成多個嗎?
- 12. 什麼時候應該將JSON分成更小的部分?
- 13. 詞法分析器應該完成哪部分解析?
- 14. 我應該對錶格進行分區/子分區嗎?
- 15. 應該使用MyApp.exe分發MyApp.vshost.exe嗎?
- 16. HTTP ETags應該區分大小寫嗎?
- 17. 單個開發者應該分支嗎?
- 18. 我應該預先分配std :: stringstream嗎?
- 19. 我應該刪除合併分支嗎?
- 20. 我應該分開我的桌子嗎?
- 21. 我應該拆分我的edmx嗎?
- 22. 共享部分應該去哪裏?
- 23. 我的「App ID」部分應該如何?
- 24. 'shared/error_messages'部分不呈現時應該
- 25. 我應該用兩個if語句分開嗎?
- 26. 將wordpress分成兩部分
- 27. 將PDL分成兩部分
- 28. 將列分成兩部分
- 29. 我應該生成HTML表單嗎?
- 30. 接口應該是用例圖中系統的一部分嗎?
@ user658911:現在的結構是否會遇到一些問題? – zerkms 2011-03-29 23:21:40
不,但要提高可伸縮性和可靠性 – Vish 2011-03-29 23:42:10
@ user658911:如果它的工作原理 - 不要改變它 – zerkms 2011-03-29 23:45:40