Chcę tylko dodać słowo ostrzeżenia:proszę bardzo ostrożnie wybierz indeks klastrowy! Każda "zwykła" tabela danych powinna mieć indeks klastrowy, ponieważ posiadanie indeksu klastrowego rzeczywiście przyspiesza wiele operacji - tak, przyśpiesz , nawet wstawia i usuwa! Ale tylko jeśli wybierzesz dobry indeks klastrowy.
Jest to najbardziej replikowany strukturę danych w bazie danych SQL Server. Klucz klastrowania będzie również częścią każdego nieklastrowanego indeksu w Twojej tabeli.
Należy zachować szczególną ostrożność podczas wybierania klucza klastrowania — powinien on wyglądać następująco:
-
wąski (idealnie 4 bajty)
-
unikalny (w końcu jest to „wskaźnik wiersza”. Jeśli nie uczynisz go unikalnym, SQL Server zrobi to za Ciebie w tle, co kosztuje kilka bajtów za każdy wpis razy liczbę wierszy i liczbę nieklastrowanych indeksów, które mieć - może to być bardzo kosztowne!)
-
statyczny (nigdy nie zmieniaj - jeśli to możliwe)
-
idealnie stale rosnący więc nie skończysz z okropną fragmentacją indeksu (identyfikator GUID jest całkowitym przeciwieństwem dobrego klucza klastrowania - z tego konkretnego powodu)
-
nie powinna dopuszczać wartości null, a najlepiej również o stałej szerokości -
varchar(250)
tworzy bardzo słaby klucz klastrowania
Wszystko inne powinno być drugim i trzecim poziomem ważności za tymi punktami ....
Zobacz niektóre z publikacji Kimberly Tripp (Królowa indeksowania ) posty na blogu na ten temat – wszystko, co napisała na swoim blogu, jest absolutnie bezcenne – przeczytaj to, przetrawij – żyj zgodnie z tym!
- Identyfikatory GUID jako KLUCZE PODSTAWOWE i/lub klucz klastrowy
- Debata o indeksach klastrowych trwa...
- Ciągle rosnący klucz do klastrowania – ponownie debata na temat indeksów klastrowych!
- Miejsce na dysku jest tanie - to nie punkt!