A compactação de dados pode ser definida na tabela:
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)
E pode ser definido na chave primária:
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)
Mas se você colocá-lo em ambos, você receberá este erro:
A opção DATA_COMPRESSION foi especificada mais de uma vez para a tabela ou para pelo menos uma de suas partições se a tabela estiver particionada.
Existe alguma diferença em colocá-lo no PK vs na mesa?
sql-server
sql-server-2012
compression
Vaccano
fonte
fonte
Respostas:
Não se trata de colocar a compactação em uma chave primária, mas de colocar a compactação no índice clusterizado . Para o SQL Server, um índice em cluster está organizando a estrutura física da tabela nesse índice. Ou, de forma mais curta, o índice clusterizado é a tabela. Isso significa que compactar o índice em cluster e compactar a tabela são funcionalmente equivalentes. Se você criar sua chave primária como um índice não agrupado em cluster e manter a tabela base como um heap, essas duas estruturas serão diferentes e compactadas separadamente.
fonte