La compression des données peut être définie sur la table:
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)
Et il peut être défini sur la clé primaire:
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)
Mais si vous le mettez sur les deux, vous obtenez cette erreur:
L'option DATA_COMPRESSION a été spécifiée plusieurs fois pour la table, ou pour au moins une de ses partitions si la table est partitionnée.
Y a-t-il une différence à le mettre sur le PK vs sur la table?
Réponses:
Il ne s'agit pas de mettre la compression sur une clé primaire, mais plutôt de mettre la compression sur l' index clusterisé . Pour SQL Server, un index cluster organise la structure physique de la table sur cet index. Ou, sous une forme plus courte, l'index cluster est la table. Cela signifie que la compression de l'index cluster et la compression de la table sont fonctionnellement équivalentes. Si vous deviez créer votre clé primaire en tant qu'index non cluster et conserver la table de base en tant que segment de mémoire, ces deux structures seraient différentes et compressées séparément.
la source