Czytelnicy tacy jak ty pomagają wspierać MUO. Kiedy dokonujesz zakupu za pomocą linków na naszej stronie, możemy otrzymać prowizję partnerską. Czytaj więcej.

Indeks pomaga SQL Server szybko pobierać dane z wierszy. Indeksy działają jak spis treści na początku książki, umożliwiając szybkie wyszukanie strony, na której znajduje się dany temat. Bez indeksów SQL Server musi przeskanować wszystkie wiersze w tabeli, aby znaleźć rekord.

Istnieją dwa typy indeksów w SQL Server: klastrowe i nieklastrowane. Dowiedz się, jaka jest różnica między indeksami klastrowymi i nieklastrowymi i dlaczego są one ważne.

Indeks klastrowany w SQL Server

W indeksie klastrowym wiersze danych są fizycznie przechowywane w uporządkowany sposób na podstawie wartości klucza. Ponieważ indeks obejmuje tabelę i może układać wiersze tylko w jednym porządku, można utworzyć tylko jeden indeks klastrowany na tabelę.

Podczas gdy indeksy przyspieszają pobieranie wierszy w zakresie, Instrukcje INSERT i UPDATE może działać wolno, ponieważ optymalizator zapytań skanuje indeks po kolei, dopóki nie znajdzie indeksu docelowego.

instagram viewer

Indeks nieklastrowany w SQL Server

Indeks nieklastrowany zawiera kluczowe wartości, których wpisem jest wskaźnik zwany lokalizatorem wierszy. W przypadku tabel klastrowanych (tabel z indeksem klastrowym) wskaźnik wskazuje klucz w indeksie klastrowym, który z kolei wskazuje wiersz w tabeli. W przypadku wierszy bez indeksu klastrowego wskaźnik wskazuje bezpośrednio wiersz tabeli.

Jak utworzyć indeks klastrowany w SQL Server

Podczas tworzenia tabeli z kluczem podstawowym SQL Server automatycznie tworzy klucz indeksu klastrowego na podstawie tego klucza podstawowego. Jeśli nie masz klucza podstawowego, możesz wykonać następującą instrukcję, aby utworzyć klucz indeksu klastrowego.

TWORZYĆ SKUPIONE INDEKS <indeksnazwa>
NA STOLE <Nazwa tabeli>(Nazwa kolumny)

W tej instrukcji określasz nazwę indeksu, nazwę tabeli, w której chcesz go utworzyć, oraz nazwę kolumny, która ma zostać użyta w indeksie.

Jeśli dodasz klucz podstawowy do tabeli, która ma już indeks klastrowany, SQL Server utworzy z nim indeks nieklastrowany.

Aby utworzyć indeks klastrowany, który nie zawiera kolumny klucza podstawowego, należy najpierw usunąć ograniczenie klucza podstawowego.

UŻYWAĆnazwa_bazy danych
ZMIENIAĆTABELA Nazwa tabeli
UPUSZCZAĆOGRANICZENIE nazwa_pakietu
IŚĆ

Usunięcie ograniczeń klucza podstawowego powoduje również usunięcie indeksu klastrowego, umożliwiając utworzenie niestandardowego.

Jak utworzyć indeks nieklastrowany w SQL Server

Aby utworzyć indeks nieklastrowany, użyj następującej instrukcji.

TWORZYĆINDEKS <indeksnazwa>
NA STOLE <Nazwa tabeli>(Nazwa kolumny)

Możesz także użyć słowa kluczowego NONCLUSTERED w następujący sposób:

TWORZYĆ [NIESKLASTROWANE] INDEKS <indeksnazwa>
NA STOLE <Nazwa tabeli>(Nazwa kolumny)

Ta instrukcja tworzy indeks nieklastrowany w określonej tabeli i zawiera wskazaną kolumnę.

Jeśli chcesz, możesz posortować kolumny w porządku rosnącym (ASC) lub malejącym (DESC).

TWORZYĆ [NIESKLASTROWANE] INDEKS <indeksnazwa>
NA STOLE <Nazwa tabeli>(nazwa_kolumny ASC/DESC)

Który indeks wybrać?

Zarówno indeksy klastrowane, jak i nieklastrowane skracają czas wykonywania zapytań. Jeśli większość twoich zapytań to operacje SELECT na kilku kolumnach w tabeli, indeksy klastrowe są szybsze. Jednak w przypadku operacji INSERT lub UPDATE indeksy nieklastrowane są szybsze, ponieważ optymalizator zapytań może zlokalizować kolumnę bezpośrednio z indeksu.

Jak widać, te indeksy sprawdzają się najlepiej różne zapytania SQL. Dlatego większość baz danych SQL odniesie korzyści z posiadania co najmniej jednego indeksu klastrowego i indeksów nieklastrowych dla kolumn, które są regularnie aktualizowane.

Znaczenie indeksów w SQL Server

Indeksy klastrowane i nieklastrowane prowadzą do wyższej wydajności zapytań. Po uruchomieniu zapytania optymalizator zapytań skanuje indeks w poszukiwaniu lokalizacji przechowywania wiersza, a następnie pobiera informacje z tej lokalizacji. Jest to znacznie szybsze niż skanowanie wszystkich wierszy w tabeli.

Możesz także użyć indeksów nieklastrowanych, aby rozwiązać zakleszczenia wyszukiwania zakładek, tworząc indeks nieklastrowany dla kolumn, do których mają dostęp zapytania.