Sql-Server-2008

空間索引壓縮

  • August 15, 2017

我希望在空間索引上打開頁面壓縮。實例為 2008 Enterprise。該索引預先存在於供應商提供的應用程序中。在通過 BOL 搜尋時,它指出壓縮和填充因子都是允許的。

ALTER INDEX [ix_city_citypoint] on city 
REBUILD WITH (FILLFACTOR = 90, DATA_COMPRESSION = PAGE) 

消息 153,級別 15,狀態 4,第 12 行

ALTER INDEX REBUILD 語句中選項 data_compression 的使用無效。

原創創作:

CREATE SPATIAL INDEX [ix_city_citypoint] ON [dbo].[city]
(
   [citypoint]
)USING  GEOGRAPHY_GRID 
WITH (GRIDS =(LEVEL_1 = MEDIUM,LEVEL_2 = MEDIUM,LEVEL_3 = MEDIUM,LEVEL_4 = MEDIUM), 
CELLS_PER_OBJECT = 16, PAD_INDEX = OFF, STATISTICS_NORECOMPUTE = OFF
   , SORT_IN_TEMPDB = OFF, DROP_EXISTING = OFF, ONLINE = OFF
   , ALLOW_ROW_LOCKS = ON, ALLOW_PAGE_LOCKS = ON) ON [primary]
GO

我總是可以忽略索引,因為它很小,但現在它變成了那些“可教”的時刻之一。感謝您的任何見解

你的語法ALTER INDEX...REBUILD WITH (DATA_COMPRESSION...)是正確的。該問題實際上在錯誤消息中顯示:

ALTER INDEX REBUILD 語句中選項 data_compression 的使用無效。

對於 SQL Server 2008 中的空間索引,不支持使用 data_compression 選項。根據Microsoft 文件,在 SQL Server 2012 中為空間索引添加了對數據壓縮的支持:

DATA_COMPRESSION = {無 | 行 | 頁}

適用於:SQL Server 2012 到 SQL Server 2017、SQL 數據庫。

如果/當您升級到較新版本的 SQL Server 時,您的原始ALTER INDEX語句將使用PAGE壓縮來重建索引。或者,正如@AaronBertrand 在評論中指出的那樣,您也可以使用CREATE...WITH (DROP_EXISTING=ON, DATA_COMPRESSION=PAGE...來更改壓縮設置,但這需要重新提供整個索引定義,其中ALTER只需要指定您正在更改的選項。

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