Sql-Server

定義 SPARSE 列是否有一些缺點?

  • August 8, 2019

我有一個表,它的列中有很多 NULL 值。但是有些列根本不包含 NULL(儘管可以為空)。將所有這些列聲明為 SPARSE 是否有一些缺點?

SPARSE 但其中沒有 NULL 值的列將比非 SPARSE 列佔用更多空間。當數據實際上是稀疏的時,您只想使用 SPARSE 列。

對我來說最大的缺點是下面的錯誤消息:

包含稀疏列或列集列的表不支持壓縮索引

--Msg 10622, Level 16, State 1, Line 15
--The index 'I_applicantID' could not be created or rebuilt. A compressed index is not supported on table that contains sparse columns or a column set column.
CREATE NONCLUSTERED INDEX I_applicantID  ON [app].[applicantSkill] (  [applicantID] ASC  , [dateAdded] ASC  )  INCLUDE ( [ApplicantSkillID] , [skillDetails] , [skillID] , [skillLevelID])  
WITH (  PAD_INDEX = OFF, FILLFACTOR = 100  , SORT_IN_TEMPDB = OFF , IGNORE_DUP_KEY = OFF, STATISTICS_NORECOMPUTE = OFF, ONLINE = OFF, DROP_EXISTING = ON, DATA_COMPRESSION=NONE, ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON ) ON [NONCLUSTERED_INDEXES] 

嘗試應用於DATA_COMPRESSION=PAGE非聚集索引時。

你可以有一個a sparser columndata compression在桌子上。要找出哪個更適合您的每張桌子,請查看此答案

在此處輸入圖像描述

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