Сжатие данных можно установить на столе:
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)
И это можно определить по первичному ключу:
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)
Но если вы поместите его в оба, вы получите эту ошибку:
Опция DATA_COMPRESSION была указана более одного раза для таблицы или хотя бы для одного из ее разделов, если таблица разбита на разделы.
Есть ли разница в том, чтобы положить его на ПК против стола?
sql-server
sql-server-2012
compression
Vaccano
источник
источник
Ответы:
Дело не в том, чтобы сжать первичный ключ, а в том, чтобы сжать кластерный индекс . Для SQL Server кластерный индекс организует физическую структуру таблицы по этому индексу. Или, в более короткой форме, кластерный индекс - это таблица. Это означает, что сжатие кластеризованного индекса и сжатие таблицы функционально эквивалентны. Если бы вы создали свой первичный ключ как некластеризованный индекс и сохранили базовую таблицу в виде кучи, эти две структуры были бы разными и сжимались по отдельности.
источник