Sql-Server

重複的 NVARCHAR 值是否作為副本儲存在 SQL Server 中?

  • July 29, 2021

我正在設計一個包含很多行的表。所以需要注意不要儲存太多資訊。其中一列是 NVARCHAR(MAX) 列,它包含我們客戶的地址。由於地址不經常更改,此列將包含許多重複值,因此包含相當多的冗餘。

所以我想知道我是否需要自己通過維護某種查找表來規範化這個地址字元串(請注意,如果地址發生變化,我需要維護歷史 - 所以這不是通常的規範化問題),或者如果 SQL Server指向幕後字元串的相同引用。或者也許它提供了一個列選項來這樣做。我想到的另一種方法是使用 COMPRESS,但我想這沒有意義,因為數據本身(即地址)並不長。

讀/寫性能並不是一個問題,因為數據會隨著時間的推移而積累。

是的,重複數據作為副本儲存在 SQL Server 中

要更改此行為,您需要實現 PAGE COMPRESSION 功能 - 使用 ( data_compression = page) 選項創建或重建索引

這是一個很棒的功能,有助於節省空間。啟用它後,SQL Server 將在後台指向同一頁面上的字元串的相同引用

請注意,PAGE COMPRESSION 並非在每個 SQL Server 版本中都可用,它可能會產生一些 CPU 成本

因此,如果您的版本不允許頁面壓縮,您可能需要創建一個查找表

引用自:https://dba.stackexchange.com/questions/279876