Vac*_*ano 9 sql-server compression sql-server-2012
可以在表上设置数据压缩:
CREATE TABLE dbo.SomeTable(
SomeId [bigint] NOT NULL,
OtherId [bigint] NOT NULL,
IsActive [bit] NOT NULL,
CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED
(
SomeId Desc
)
) ON SomePartitionScheme(SomeId) WITH (DATA_COMPRESSION=PAGE)
Run Code Online (Sandbox Code Playgroud)
它可以在主键上定义:
CREATE TABLE dbo.SomeTable(
SomeId [bigint] NOT NULL,
OtherId [bigint] NOT NULL,
IsActive [bit] NOT NULL,
CONSTRAINT [PK_Some] PRIMARY KEY CLUSTERED
(
SomeId Desc
) WITH (DATA_COMPRESSION=PAGE)
) ON SomePartitionScheme(SomeId)
Run Code Online (Sandbox Code Playgroud)
但是如果你把它放在两者上,你就会得到这个错误:
DATA_COMPRESSION 选项为表指定了多次,如果表已分区,则至少为其中一个分区指定。
把它放在PK上和放在桌子上有什么区别吗?
Mik*_*Fal 14
这不是对主键进行压缩的问题,而是对聚集索引进行压缩的问题。对于 SQL Server,聚集索引在该索引上组织表的物理结构。或者,在较短的形式中,聚集索引就是表。这意味着压缩聚集索引和压缩表在功能上是等效的。如果您将主键创建为非聚集索引并将基表保留为堆,则这两种结构将不同并分别压缩。