空间索引压缩

Dan*_*ite 2 sql-server-2008 compression spatial

我希望在空间索引上打开页面压缩。实例为2008 Enterprise。该索引预先存在于供应商提供的应用程序中。在搜索 BOL 时,它指出压缩和填充因子都是允许的。

ALTER INDEX [ix_city_citypoint] on city 
REBUILD WITH (FILLFACTOR = 90, DATA_COMPRESSION = PAGE) 
Run Code Online (Sandbox Code Playgroud)

消息 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
Run Code Online (Sandbox Code Playgroud)

我总是可以忽略索引,因为它很小,但现在它变成了那些“可教”时刻之一。感谢您的任何见解

AMt*_*two 6

你的语法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要求您仅指定要更改的选项。