La compresión de datos se puede establecer en la tabla:
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)
Y se puede definir en la clave primaria:
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)
Pero si lo pones en ambos, obtienes este error:
La opción DATA_COMPRESSION se especificó más de una vez para la tabla, o para al menos una de sus particiones si la tabla está particionada.
¿Hay alguna diferencia entre ponerlo en PK y en la mesa?
sql-server
sql-server-2012
compression
Vaccano
fuente
fuente
Respuestas:
No se trata de poner compresión en una clave primaria, sino de poner la compresión en el índice agrupado . Para SQL Server, un índice agrupado está organizando la estructura física de la tabla en ese índice. O, en forma más corta, el índice agrupado es la tabla. Esto significa que comprimir el índice agrupado y comprimir la tabla son funcionalmente equivalentes. Si tuviera que crear su clave primaria como un índice no agrupado y mantener la tabla base como un montón, estas dos estructuras serían diferentes y se comprimirían por separado.
fuente