向表添加页面压缩是否也会压缩现有索引?

dat*_*god 3 sql-server sql-server-2008-r2 compression

我正在创建一系列将启用页面级压缩的新表。

这是否也会影响索引,还是在创建索引时我还必须指定压缩?

create table Message
(
  pk_Message   int identity  NOT NULL constraint PK_Message primary key,
  [Message]    varchar(900)  NOT NULL constraint UK_Message__Message unique,
  DateCreated  datetime      NOT NULL default getdate()
) with (data_compression = page)
go  
Run Code Online (Sandbox Code Playgroud)

正如您在我的示例中看到的那样,我计划对相当大的数据类型创建唯一约束,并希望利用压缩。

Eli*_*Eli 8

来自:http : //msdn.microsoft.com/en-us/library/cc280449%28v=sql.105%29.aspx

表的压缩设置不会自动应用于其非聚集索引。每个索引必须单独设置。

  • 更正。我还写了一篇关于这个的博客 - 压缩设置没有继承:“当你压缩表和索引时,这是一个一次性的动作。你只关心今天存在的东西。如果有人(甚至你)转身并创建明天在同一张表上的索引,默认情况下不会被压缩。创建索引的人必须确保它被压缩,并且 SQL Server Management Studio 中没有任何内容会提示他们同一对象的其他部分是压缩。” http://www.brentozar.com/archive/2009/08/sql-server-data-compression-its-a-party/ (3认同)