Typy indeksów na serwerze Microsoft SQL

Typy indeksów na serwerze Microsoft SQL
Indeks pomaga nam wyszukiwać konkretny rekord w bazie danych. Jednym z kluczowych elementów możliwości zarządzania danymi SQL Server jest wsparcie dla indeksowania, które pozwala programistom i administratorom optymalizować wydajność ich zapytań i poprawić ogólną wydajność ich baz danych.

Omówimy różne kategorie indeksów na serwerze Microsoft SQL. Główne typy indeksów to: indeksy klastrowane, indeksy niezbadane, indeksy BTREE i unikalne indeksy.

Rodzaje indeksów na serwerze Microsoft SQL

Indeks klastrowy

Indeks klastrowy określa rzeczywiste fizyczne układ danych w tabeli. Każda tabela na serwerze SQL może mieć tylko jeden indeks klastrowy, a indeks musi być utworzony na unikalnej kolumnie lub zbiorze kolumn lub zestawu kolumn. Ponieważ indeks skupiony określa fizyczny układ tabeli, jest często używany do tabel, które są często przeszukiwane na podstawie ich klucza podstawowego lub innych unikalnych wartości.

Najpierw utwórzmy tabelę i wstawmy do niej wartości za pomocą następujących poleceń SQL:

Wstaw do klientów (Customer_id, Customer_name, Customer_email, Customer_phone)
Wartości (1, „somdeb nath”, „somdebnath@przykład.com ', „3532626”),
(2, „Jina Pal”, „paljina@przykład.com ', „5555678”),
(3, „Arnita guha”, „rjarnita@przykład.com ', „4449912”),
(4, „Krishna Kumar”, „kk@przykład.com ', „716781497”);

Spójrzmy na przykład indeksu klastrowego. Aby utworzyć indeks klastrowy w kolumnie „Customer_id”, możemy użyć następującego zapytania SQL:

Utwórz klastrowane indeks IDX_Customers_Customer_Name na klientach (nazwa_ klienta);

Tworzy to indeks klastrowy w kolumnie Customer_name, w której dane w tabeli są fizycznie zamawiane na podstawie wartości w kolumnie Customer_name.

Aby pobrać wszystkich klientów, których nazwa zaczyna się od litery „A”, możemy użyć następującego zapytania SQL:

WYBIERAĆ *
Od klientów
Gdzie nazwa_ klienta jak „A%”
Zamów według nazwy klienta;

Wyjście:

Customer_id Customer_name Customer_email Customena_phone
1 3 Arnita guha rjarnita@przykład.com 4449912

Indeks nie klastrowy

Jest to rodzaj indeksu, który nie wpływa na kolejność fizyczną danych w tabeli. Indeks nie klastrowy wytwarza niezależną strukturę danych, która przechowuje klucz indeksu i wskaźnik do powiązanego wiersza danych w tabeli. Umożliwia to zapytania szybko zlokalizować odpowiednie wiersze danych na podstawie wartości w indeksie. W przeciwieństwie do indeksów klastrowych, tabele na serwerze SQL mogą mieć wiele indeksów nieoklasowych, a indeks można utworzyć na dowolnej kolumnie lub zestawie kolumn w tabeli.

Przykład indeksu nie klastrowanego jest następujący:

Utwórz nieklastyczny indeks IDX_Customer_email
Na klientach (Customer_email);

Tworzy to indeks nie klastrowy w kolumnie „Customer_email”, w którym dane w tabeli pozostają fizycznie nieuporządkowane, ale indeks przechowuje posortowaną kopię danych w kolumnie „Customer_email”.

Aby pobrać wszystkich klientów, których adres e -mail zawiera „Gmail.Com ”, możemy użyć następującego zapytania SQL:

WYBIERAĆ *
Od klientów
Gdzie customer_email jak „%gmail.com%'
Zamów według nazwy klienta;

Wyjście:

Customer_id Customer_name Customer_email Customena_phone

Tutaj żaden klient nie ma wiadomości e -mail zawierającej „Gmail.domena com, więc pole wyjściowe jest puste.

Indeks Btree

Indeks BTREE to sposób na zorganizowanie danych w strukturze, która przypomina drzewo. Każdy węzeł w drzewie zawiera zakres wartości kluczowych, a każdy węzeł liściowy zawiera wskaźnik do odpowiedniego wiersza danych. Indeksy BTREE są powszechnie używane na serwerze SQL, ponieważ pozwalają na wydajne wyszukiwanie i sortowanie dużych ilości danych. Są one szczególnie przydatne do zapytań, które obejmują wyszukiwanie zasięgu lub operacje sortowania. Na przykład: pensje, numery telefonów itp.

Przykład utworzenia indeksu BTREE w kolumnie „Custome_phone” jest następujący:

Utwórz indeks IDX_Customer_Phone
Na klientach (Custome_Phone);

Tworzy to indeks B-Tree w kolumnie „Customer_phone”, w której dane w indeksie są przechowywane w strukturze przypominającej drzewo, przy czym każdy węzeł zawiera zakres wartości i wskaźników do innych węzłów.

Teraz chcemy odzyskać wszystkich klientów, których numer telefonu zaczyna się od kodu obszarowego „555” przy użyciu następującego zapytania SQL:

WYBIERAĆ *
Od klientów
Gdzie client_phone jak „555%”
Zamów według nazwy klienta;

Wyjście:

Customer_id Customer_name Customer_email Customena_phone
1 2 Jina Pal Paljina@przykład.COM 5555678

Unikalny indeks

Jest to rodzaj indeksu, który zapewnia, że ​​żadne dwa wiersze w tabeli nie mają tej samej wartości kluczowej. Może to być przydatne do egzekwowania integralności danych i zapobiegania zduplikowaniu rekordów w tabeli.

Przykład utworzenia unikalnego indeksu w kolumnie „Customer_email” jest następujący:

Utwórz indeks IDX_Customer_Email_New
Na klientach (Customer_email);

Tworzy to unikalny indeks w kolumnie „Customer_email”, w którym indeks egzekwuje ograniczenie, które zapewnia, że ​​żadne dwa wiersze w tabeli nie mogą mieć tej samej wartości w kolumnie „Customer_email”.

Teraz włóż nowego klienta do stołu za pomocą „[email protected] ”e -mail i odzyskaj za pomocą następującego zapytania SQL:

Wstaw do klientów (Customer_id, Customer_name, Customer_email, Customer_phone)
Wartości (5, „Lili Doe”, „[email protected] ', „333-333-3333”);
wybierać *
Od klientów, w których Customer_email jak „L%”;

Wyjście:

Customer_id Customer_name Customer_email Customena_phone
1 5 Lili doe [email protected] 333-333-3333

Wniosek

Indeksy odgrywają ważną rolę w optymalizacji wydajności baz danych SQL Server. Zrozumienie różnych rodzajów indeksów może pomóc administratorom bazy danych w wyborze najbardziej odpowiedniego rodzaju indeksu dla ich aplikacji. Dzięki skutecznym tworzeniu i utrzymaniu indeksów firmy mogą upewnić się, że ich bazy danych działają wydajnie, umożliwiając im podejmowanie decyzji opartych na danych i zapewnienie lepszej usługi swoim klientom.