2012-03-15 30 views
1

我們有19個空列,其中只有一個記錄每列被分配一個非空值,有點像一個C工會的表格。這是使用SPARSE的理想情況嗎?有更好的選擇嗎?每一列是(整數)外鍵,所以我不認爲我們想嘗試合併成一列,因爲我們希望其他實體的關係是清楚和簡單地定義。SPARSE是實現SQL列聯合的最佳方式嗎?

如果你想知道爲什麼我們有這樣的設計,它是序列號跟蹤。對於每個可能發生在序列號上的事務,我們都有一個記錄。我們關心的有19種不同類型的交易(記錄在19個不同的表格中)。我們希望能夠參考任何這些交易。

+0

你應該看看這個問題http://stackoverflow.com/questions/1398453/why-when-should-i-use-sparse-column-sql-server-2008 – Lamak 2012-03-15 16:44:45

+0

查詢優化器非常擅長處理列中的空值。你是否想要爲所有聯合值聯盟獲得1個結果集? – Gats 2012-03-15 16:45:04

+0

這種設計的原因是什麼?你能舉一個簡單的例子嗎?也許你需要超類型/子類型模式? – 2012-03-15 16:46:38

回答

0

根據BOL部分Estimated Space Savings by Data Type,如果至少64%是NULL,則應考慮SPARSE列爲INT列。

您有94.7%NULL所以好像你可以從中受益我。這似乎確實是一個不尋常的設計。

+0

我已經知道節省的空間會在那裏,所以稀疏是聊勝於無。我只是想知道是否有更好的選擇。 – BlueMonkMN 2012-03-15 19:01:09