回答
如果您將表格拆分爲多個部分,則需要額外的連接才能將所有列都排成一行 - 這會花費您的時間。
97列不多,真的 - 我見過遠遠超出100
這一切都取決於如何使用你的數據 - 如果你的行只是有97列,所有的時間,和需求到97列 - 那麼把它們分解成不同的表格真的很難理解。
這可能是有意義的,如果:
您可以將一些「大」的列(如
XML
,VARCHAR(MAX)
等)到一個單獨的表,如果你不需要這些所有的時間 - >在這種情況下,您的「基本」行變小,您的基本表會更好 - 只要您不需要那些超大的列您可以將一些列移動到不是單獨的表總是存在,例如可能是「可選」的列,僅用於例如20%的行 - 在這種情況下,您可以爲其餘80%的不需要這些列的情況節省一些處理。
+1:並消除列如:Comment1,Comment2,Comment3 ... – JeffO
@marc_s所以看來,SQL Server更好地處理操作整數而不是基於文本的值? –
@AdrianK .: SQL Server更好地處理數據類型越小的操作,因爲固定長度類型的開銷較少,所以更喜歡固定長度類型(如INT)超過可變長度。 –
將相關列分組到不同的表中會更好。這將提高數據庫的性能,並提高程序員的易用性。你應該首先找出你的列之間的所有不同關係,然後你應該試着把所有的東西都分解成表格,同時牢記這些關係(使用主鍵,分支鍵,引用等等)。試着創建一個圖表作爲這http://www.simple-talk.com/iwritefor/articlefiles/354-image008.gif並從那裏採取。
不一定!將多個「零件」分配給單個行也意味着需要額外的JOIN,而且這些「零件」不是「免費的」 - 將表連接在一起需要花費時間! –
@marc_s是的,但是當你用一個單元格查詢一個帶有97個列的表格時,有一個更小的表格要好得多。另外爲了組織的目的,它也更有意義。 (當然取決於數據本身..如果數據是全部97 cols所有相關,然後保持這種方式,但我懷疑) –
除非您的數據是非規格化的,否則最好將所有列保留在同一個表中。 SQL Server從各個表中將頁面讀入緩衝池。因此,即使訪問的頁面已經在緩衝池中,每次訪問都會產生連接代價。如果你用一個鍵訪問每個查詢的幾行數據,那麼一個索引將會用同一個表中的所有列來處理這個查詢。即使您將掃描大部分行(大於大表的1%),但只有97列中的少數幾列,仍然可以將列保留在同一個表中,因爲您可以使用非聚集索引查詢。但是,如果數據嚴重非規範化,那麼對其進行規範化處理,根據規範將其分解成許多表格以消除冗餘,將會大大提高性能,並且您將能夠編寫查詢以僅訪問特定數據你需要的元素。
- 1. 樣式表:1個大的或幾個bigones或幾個小的?
- 2. 幾個較小的一個大型SQL服務器表?
- 3. 在VS2010上有幾個項目和幾個「主要」功能
- 4. 比較(幾個)元組的Python列表
- 5. 有幾個孩子的表
- 6. 在幾百個日誌文件中搜索幾百個文件名
- 7. 在MySQL中有一個或幾個較小的GPS表是更好嗎?
- 8. 比較幾個月和jQuery
- 9. Python:比較幾個文件
- 10. OpenJPA的:幾個@Embedded VS一個@ElementCollection
- 11. 一個表中有幾百萬行的更新列
- 12. 只有幾小時或幾小時和幾分鐘的正則表達式
- 13. 幾個模型的大小
- 14. 一個大的包含文件或幾個較小的文件?
- 15. 一個大的流或幾個較小的流?
- 16. PHP:一個巨型數據庫類或幾個較小的類?
- 17. 包含一個大文件或幾個較小的文件?
- 18. 有幾個「頁面」的Qt-GUI,如何同步幾個QWidgets的大小
- 19. 幾個角色可以有幾個相同的武器和幾個
- 20. 一個大SVN合併vs幾個小合併 - 超時!
- 21. 什麼是比較有效:幾個插入VS單個插入與工會
- 22. GROUP BY幾個小時
- 23. 比較幾個具有相同結構的數據表
- 24. 有幾個任務
- 25. 如何比較一個列中的幾個日期和幾個循環?
- 26. 對於每個只有幾個記錄重複數百次
- 27. 什麼是幾百
- 28. 將幾百個png文件從png24縮小到png8
- 29. 匹配大字符串對幾百個小短語
- 30. 一個NSFetchedResultsController vs幾個UITableViews - 只有一個UITableView獲取更新?
** [在此檢查](http://stackoverflow.com/a/10931849/1425057)** – 2012-06-07 17:24:42