Indekstyper i Microsoft SQL Server

Indekstyper i Microsoft SQL Server
En indeks hjelper oss å søke etter en bestemt post i databasen. En av nøkkelkomponentene i SQL Server's Data Management -evner er støtten til indeksering som gjør at utviklerne og administratorene kan optimalisere ytelsen til spørsmålene deres og forbedre den generelle effektiviteten til databasene deres.

Vi vil diskutere de forskjellige kategoriene av indekser i Microsoft SQL -serveren. Hovedtypene av indekser er: grupperte indekser, ikke-klyngede indekser, btree-indekser og unike indekser.

Typer indekser i Microsoft SQL Server

Gruppert indeks

En gruppert indeks definerer den faktiske fysiske ordningen av dataene i en tabell. Hver tabell i SQL-serveren kan bare ha en gruppert indeks, og indeksen må opprettes på en unik, ikke-null kolonne eller sett med kolonner. Siden en gruppert indeks bestemmer den fysiske utformingen av en tabell, brukes den ofte til tabeller som ofte blir søkt basert på deres primære nøkkel eller andre unike verdier.

La oss først lage en tabell og sette inn verdiene i den ved å bruke følgende SQL -kommandoer:

Sett inn kunder (customer_id, customer_name, customer_email, customer_phone)
Verdier (1, 'Somdeb Nath', '[email protected] ',' 3532626 '),
(2, 'Jina Pal', '[email protected] ',' 5555678 '),
(3, 'Arnita Guha', '[email protected] ',' 4449912 '),
(4, 'Krishna Kumar', '[email protected] ',' 716781497 ');

La oss se på et eksempel på en gruppert indeks. For å opprette en gruppert indeks på kolonnen "Customer_id", kan vi bruke følgende SQL -spørring:

Lage klynget indeks idx_customers_customer_name på kunder (customer_name);

Dette oppretter en gruppert indeks på Customer_name -kolonnen der dataene i tabellen er fysisk bestilt basert på verdiene i Customer_name -kolonnen.

For å hente alle kundene hvis navn starter med bokstaven “A”, kan vi bruke følgende SQL -spørring:

PLUKKE UT *
Fra kunder
Der kundenavn som 'a%'
Bestilling etter kundenavn;

Produksjon:

customer_id customer_name customer_email customer_phone
1 3 Arnita Guha [email protected] 4449912

Ikke-klynget indeks

Det er en type indeks som ikke påvirker den fysiske rekkefølgen på dataene i en tabell. En ikke-klynget indeks produserer en uavhengig datastruktur som lagrer indeksnøkkelen og pekeren til den tilhørende dataraden i tabellen. Dette gjør at spørsmålene raskt kan finne de relevante dataradene basert på verdiene i indeksen. I motsetning til de grupperte indeksene, kan tabellene i SQL-serveren ha flere ikke-klyngede indekser, og indeksen kan opprettes på hvilken som helst kolonne eller sett med kolonner i tabellen.

Et eksempel på en ikke-klynget indeks er som følger:

Opprett ikke -lukket indeks IDX_CUSTOMER_EMAIL
På kunder (Customer_Email);

Dette oppretter en ikke-klynget indeks på kolonnen "Customer_email" der dataene i tabellen forblir fysisk uordnet, men indeksen lagrer en sortert kopi av dataene i "Customer_email" -kolonnen.

Å hente alle kunder hvis e -postadresse inkluderer “Gmail.com ”-domenet, vi kan bruke følgende SQL -spørring:

PLUKKE UT *
Fra kunder
Hvor Customer_Email liker '%gmail.com%'
Bestilling etter kundenavn;

Produksjon:

customer_id customer_name customer_email customer_phone

Her har ingen kunder en e -post som inneholder “Gmail.com ”-domenet, så utgangsfeltet er tomt.

Btree Index

En Btree -indeks er en måte å organisere dataene i en struktur som ligner et tre. Hver node i treet inneholder en rekke nøkkelverdier, og hver bladknute inneholder en peker til den tilsvarende dataraden. Btree -indekser brukes ofte i SQL -serveren fordi de gir mulighet for effektiv søking og sortering av store datamengder. De er spesielt nyttige for spørsmål som involverer rekkesøk eller sorteringsoperasjoner. For eksempel: lønn, telefonnumre osv.

Et eksempel på å lage en BTREE -indeks på kolonnen "Customer_phone" er som følger:

Opprett indeks IDX_CUSTOMER_PHONE
På kunder (Customer_phone);

Dette oppretter en B-Tree-indeks på kolonnen “Customer_phone” der dataene i indeksen er lagret i en trelignende struktur, med hver node som inneholder en rekke verdier og pekere til de andre nodene.

Nå ønsker vi å hente alle kunder hvis telefonnummer starter med retningsnummeret til “555” ved å bruke følgende SQL -spørring:

PLUKKE UT *
Fra kunder
Hvor Customer_phone som '555%'
Bestilling etter kundenavn;

Produksjon:

customer_id customer_name customer_email customer_phone
1 2 jina pal [email protected] 5555678

Unik indeks

Det er en type indeks som sikrer at ingen to rader i en tabell har samme nøkkelverdi. Dette kan være nyttig for å håndheve dataintegriteten og forhindre duplikatpostene i en tabell.

Et eksempel på å lage en unik indeks på kolonnen "Customer_email" er som følger:

Opprett indeks IDX_CUSTOMER_EMAIL_NEW
På kunder (Customer_Email);

Dette oppretter en unik indeks på kolonnen "Customer_email" der indeksen håndhever en begrensning som sikrer at ingen to rader i tabellen kan ha samme verdi i kolonnen "Customer_email".

Sett en ny kunde inn i bordet med “[email protected] ”e -post og hente den ved hjelp av følgende SQL -spørring:

Sett inn kunder (customer_id, customer_name, customer_email, customer_phone)
Verdier (5, 'lili doe', '[email protected] ',' 333-333-3333 ');
plukke ut *
Fra kunder der Customer_Email liker 'L%';

Produksjon:

customer_id customer_name customer_email customer_phone
1 5 lili doe [email protected] 333-333-3333

Konklusjon

Indekser spiller en viktig rolle i å optimalisere ytelsen til SQL Server -databasene. Å forstå de forskjellige typer indekser kan hjelpe databaseadministratorene med å velge den mest passende typen indeks for applikasjonene sine. Ved effektivt å lage og vedlikeholde indeksene, kan virksomheter sikre at databasene deres presterer effektivt, slik at de kan ta datadrevne beslutninger og gi en bedre service til kundene sine.