Lubię sprawdzić, co na ten temat ma do powiedzenia Kimberly Tripp The Queen of Indexing:
Zacznę od mojej rekomendacji klucza klastrowego - z kilku powodów. Po pierwsze, jest to łatwa decyzja, a po drugie, wczesne podjęcie takiej decyzji pomaga aktywnie zapobiegać niektórym typom fragmentacji. Jeśli możesz zapobiec pewnym typom fragmentacji tabeli bazowej, możesz zminimalizować niektóre czynności konserwacyjne (z których niektóre w SQL Server 2000 ORAZ mniejsze w SQL Server 2005) wymagają, aby tabela była w trybie offline. OK, przejdę do odbudowy później .....
Zacznijmy od kluczowych rzeczy, których szukam w kluczu klastrowym:
* Unique
* Narrow
* Static
Dlaczego wyjątkowy?
Klucz klastra powinien być unikalny, ponieważ klucz klastrowania (jeśli taki istnieje) jest używany jako klucz wyszukiwania ze wszystkich indeksów nieklastrowanych. Weźmy na przykład indeks na końcu książki - jeśli chcesz znaleźć dane, na które wskazuje wpis indeksu - ten wpis (wpis indeksu) musi być unikalny, w przeciwnym razie który wpis indeksu byłby tym, którego szukasz ? Więc kiedy tworzysz indeks klastrowy - musi być unikalny. Ale SQL Server nie wymaga, aby klucz klastrowania był tworzony w unikatowej kolumnie. Możesz go utworzyć w dowolnej kolumnie (kolumnach). Wewnętrznie, jeśli klucz klastrowania nie jest unikalny, SQL Server „ujednolici” go, dodając 4-bajtową liczbę całkowitą do danych. Więc jeśli indeks klastrowy jest tworzony na czymś, co nie jest unikalne, to nie tylko występuje dodatkowe obciążenie związane z tworzeniem indeksu, ale także marnowane miejsce na dysku,
Źródło: Coraz większa debata na temat klastrów - znowu!