Sytuacja
- Hurtownia danych w Sql Server 2008 Enterprise
- Ponad 36 milionów stosów wierszy (nie pytaj), z ponad 60 kolumnami
- 750 tys. Dodawane miesięcznie
- Nie zdefiniowano klucza podstawowego (teraz go zidentyfikowałem)
- Bez kompresji
Co myślę o robieniu (w tej kolejności)
- Dodaj kompresję na poziomie strony
- Dodaj PK
- Dodaj wiele indeksów nieklastrowych
- Zrób to tak szybko, jak to możliwe
Pytanie
- Ostatecznie: czy najpierw dodaję PK lub kompresję strony? (Czy to ma znaczenie?)
- Jeśli najpierw dodam kompresję do tabeli, czy jakieś indeksy odziedziczą ustawienia kompresji na poziomie tabeli? Odpowiedź na to pytanie brzmi: „Nie, kompresja nie jest dziedziczona”, znaleziona tutaj na dba.stackexchange
W tym momencie się pochylam
-- 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
...
...
Zajrzałem tutaj (dokumentacja tworzenia PK) i tutaj (dokumentacja ALTER TABLE) , ale nie widzę nic ostatecznego na temat tego, czy jakieś indeksy dziedziczą ustawienia kompresji tabeli. Odpowiedź na to pytanie brzmi: „Nie, kompresja nie jest dziedziczona”, znaleziona tutaj na dba.stackexchange
źródło