Что происходит, когда вы используете сжатие страницы для первичного ключа в SQL Server?

#sql-server

#sql-server

Вопрос:

Учитывая, что индекс первичного ключа — это то, как физически расположена таблица, какой эффект, если таковой имеется, можно получить, поместив на него С помощью DATA_COMPRESSION ?

 CREATE TABLE [Search].[Property]
    (
     [PropertyId] [BIGINT]
        NOT NULL
        CONSTRAINT PK_Property PRIMARY KEY WITH (DATA_COMPRESSION = PAGE),
     [Parcel] [GEOMETRY] NULL
                         CHECK ([Parcel] IS NULL
                                OR ([Parcel].STSrid = 3857
                                    AND [Parcel].STIsValid() = 1
                                   )),
     [StreetNumber] [VARCHAR](20) NULL,
     [StreetDir] [VARCHAR](2) NULL,
     [StreetName] [VARCHAR](50) NULL,
     [StreetType] [VARCHAR](4) NULL,
     [StreetPostDir] [VARCHAR](2) NULL
    )
    WITH (
         DATA_COMPRESSION = PAGE); 

GO
  

Ответ №1:

Это имеет тот же эффект, что и сжатие таблицы, например :

 ALTER TABLE [Search].[Property]
REBUILD WITH (DATA_COMPRESSION = PAGE);
  

Подробнее о сжатии индексов и таблиц см. В MSDN или MSDN для получения подробной информации о том, как сжатие страницы реализовано в SQL Server.

Ответ №2:

AFAIK, на самом деле это зависит; Когда вы включаете сжатие для первичного ключа (как в вашем сообщении). Если кластеризованный индекс создается на PK (который используется по умолчанию), то он будет действовать как сжатие на уровне таблицы (т.Е. Сжатие кластеризованного индекса = сжатие таблицы); тогда как, если это некластеризованный индекс, тогда будет иметь место только сжатие индекса.

  [PropertyId] [BIGINT]
    NOT NULL
    CONSTRAINT PK_Property PRIMARY KEY WITH (DATA_COMPRESSION = PAGE)