Die Datenkomprimierung kann für die Tabelle festgelegt werden:
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)
Und es kann auf dem Primärschlüssel definiert werden:
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)
Aber wenn Sie es auf beide setzen, erhalten Sie diesen Fehler:
Die Option DATA_COMPRESSION wurde mehrmals für die Tabelle oder für mindestens eine ihrer Partitionen angegeben, wenn die Tabelle partitioniert ist.
Gibt es einen Unterschied zwischen dem PK und dem Tisch?
sql-server
sql-server-2012
compression
Vaccano
quelle
quelle
Antworten:
Es geht nicht darum, einen Primärschlüssel zu komprimieren, sondern darum, den Clustered-Index zu komprimieren . Bei SQL Server organisiert ein Clustered-Index die physische Struktur der Tabelle für diesen Index. In kürzerer Form ist der Clustered-Index die Tabelle. Dies bedeutet, dass das Komprimieren des Clustered-Index und das Komprimieren der Tabelle funktional äquivalent sind. Wenn Sie Ihren Primärschlüssel als nicht gruppierten Index erstellen und die Basistabelle als Heap behalten würden, wären diese beiden Strukturen unterschiedlich und würden separat komprimiert.
quelle