ситуация
- Хранилище данных на Sql Server 2008 Enterprise
- Куча строк более 36 миллионов (не спрашивайте), более 60 столбцов
- 750 тыс. Добавляется ежемесячно
- Не определен первичный ключ (сейчас я его определил)
- Без сжатия
Что я думаю сделать (в таком порядке)
- Добавить сжатие на уровне страницы
- Добавить ПК
- Добавьте количество некластеризованных индексов
- Сделайте это как можно быстрее
Вопрос
- В конечном счете: я сначала добавляю PK или сжатие страниц? (Это имеет значение?)
- Если я сначала добавлю сжатие к таблице, будут ли какие-либо индексы наследовать настройки сжатия на уровне таблицы? Ответ на этот конкретный вопрос: «Нет, сжатие не наследуется», можно найти здесь на dba.stackexchange
На что я склоняюсь в данный момент
-- Add page level compression
alter table dbo.TableName
rebuild with (data_compression = page)
;
go
-- Add primary key
alter table dbo.TableName
add constraint PK_TableName
primary key clustered (<Columns>)
;
go
-- Add NC_IXs here
...
...
Я посмотрел здесь (документация по созданию PK) и здесь (документация ALTER TABLE) , но не вижу ничего определенного в том, наследуют ли какие-либо индексы настройки сжатия таблиц. Ответ на этот конкретный вопрос: «Нет, сжатие не наследуется», можно найти здесь на dba.stackexchange