2011-09-07 450 views
1

將具有大約100列的大型表拆分爲2個獨立表是否有任何性能優勢?這將在插入,刪除和選擇任務方面?我使用的是SQL Server 2008的一張大桌子還是分成兩個小桌子?

+0

對不起,這只是一個普遍的問題?正如你可以看到幾個人已經回答了! –

+0

雖然有幾個人*已經回答了,但很高興看到您的大表格的一些示例數據/模式(我相信這是@Johan所掌握的)。只是爲了確保人們可以給你**最具體的**問題最準確/相關的答案。 – jadarnel27

+1

是的,我明白了,答案在很大程度上是無用的,因爲這些東西高度依賴於你的情況。因此,答案必須猜測並假設並在'if ... then'中回答,'假設......這可能有助於',否'。所有這些都可能與您的餐桌無關。 100列是最重要的順便說一句,你需要正常化。 – Johan

回答

1

如果字段之一是CLOB或BLOB 你預計它拿着一個巨大的數據量和您將不再需要那場經常結果集將在很長的管道傳輸(如服務器到基於Web的客戶端),那麼我認爲將該字段放在單獨的表中將是適當的。

但就返回100個常規領域可能會不含稅你的系統這麼多,以證明一個單獨的表和聯接。

0

我會說不,因爲這將需要更多的執行時間加入2個表,只要你想幹的事。

1

你可能會看到唯一的好處是,如果只是偶爾填充的列數。在這種情況下,將這些放入他們自己的表中,並且只在存在數據時添加一行可能對整體行開銷有意義,並且根據行數,表格的總頁數。這就是說,這是他們在SQL Server 2008中

介紹sparse columns爲維護和管理兩個表,而不是一個(尤其是考慮到人們可以對單個錶行事,如果他們選擇)的其它開銷的原因之一,它是這不太可能是值得的。

你能描述什麼類型的實體需要超過100列嗎?也許數據模型首先是錯誤的。

+0

數據模型是通話記錄,所以很多非常小的領域進行各種檢查等 –

+0

而且這些檢查是否可以無效,或所有100 +檢查總是有一個值?它們都是「BIT」列還是「TINYINT」或更大? –

+0

其中有很多都是空的。主要是位,int,smallint和幾個nvarchar,用於很好的衡量:) –

0

如果您在應用程序中同時使用這些字段,則取決於您的應用程序。

這樣的性能改進是非常糟糕:你讓你的源代碼無法理解。如果您在此表中遇到性能問題,請添加一些內容(如包含將在通過觸發器更新的請求中使用的15個字段的表),請勿修改乾淨的解決方案。

如果沒有性能問題,不要做任何事情,你會在後面看到!

相關問題