我知道在一列中存儲多個值。不是一個好主意。SQL Server - 在一列中存儲多個十進制值?
它違反了第一個正常形式---其中沒有多值屬性。正常化時期......
我使用SQL Server 2005
我有需要存儲的下限和uppper限制的測量,把它作爲一個最低和最高限速表...只有問題只有2%,我需要上限。我只會有數據下限。
我當時就想,這兩個值存儲在列(稀疏列在2008年引入了所以不是我)
有沒有辦法...?不知道XML ..
我知道在一列中存儲多個值。不是一個好主意。SQL Server - 在一列中存儲多個十進制值?
它違反了第一個正常形式---其中沒有多值屬性。正常化時期......
我使用SQL Server 2005
我有需要存儲的下限和uppper限制的測量,把它作爲一個最低和最高限速表...只有問題只有2%,我需要上限。我只會有數據下限。
我當時就想,這兩個值存儲在列(稀疏列在2008年引入了所以不是我)
有沒有辦法...?不知道XML ..
你必須存儲瘋狂的數量的行爲此甚至很重要。 1TB磁盤的價格現在是60美元!
兩個浮點使用8個字節;一個XML字符串將使用其中的一個數字來存儲一個浮點數。所以即使XML只能存儲一個而不是兩個列,它仍然會消耗更多的空間。
只需使用空列。
要回答你的問題,你可以將它存儲爲一個字符串,並且使用你知道如何解析的特定格式(例如「low:high」)。
但是...這真的不是一個好主意。
處理98%具有NULL值爲上限的行是完全正確的恕我直言。保持清潔,以後不會後悔。
即便如此,我同意Andomar。使用兩個柱,低限和高限。如果任何一個值可能未知,請將這些列設爲可空。
或者,指定默認的任意最小值和最大值,並使用這些值而不是空值。 (這樣做意味着你永遠不必嘲弄三元邏輯,例如必須用ISNULL或COALESCE包裝所有東西。)
一旦定義了模式,就可以使用一些技巧來減少存儲空間(如壓縮和sparce列)。
乘以您的RAID配置。承載1TB的硬件花費多少?通過這種方式,所有的人(可能是1M的互聯網用戶)都可以連續並行訪問它?和人們支持這個硬件?電源?災難規劃,如果你失去了這些數據,那麼你的公司將會面臨死亡? 硬盤空間很便宜。企業級硬盤空間不是。 – 2010-05-19 13:52:47
@菲利普凱利:你列出的東西可以花費(很多)錢,但它與硬盤大小無關。 1GB磁盤的電源成本與1TB磁盤相當 – Andomar 2010-05-19 14:31:02