Bralci, kot ste vi, pomagajo podpirati MUO. Ko opravite nakup prek povezav na našem spletnem mestu, lahko zaslužimo partnersko provizijo. Preberi več.

Indeks pomaga SQL Serverju hitro pridobiti podatke iz vrstic. Kazala delujejo kot kazalo vsebine na začetku knjig in vam omogočajo, da hitro poiščete stran, na kateri je tema. Brez indeksov mora SQL Server skenirati vse vrstice v tabeli, da najde zapis.

V SQL Server obstajata dve vrsti indeksov: v gručah in brez gruč. Ugotovite razliko med gručastimi in negručastimi indeksi in zakaj so pomembni.

Gručni indeks v SQL Serverju

V gručastem indeksu so podatkovne vrstice fizično shranjene na urejen način na podlagi vrednosti ključa. Ker indeks vključuje tabelo in lahko razporedi vrstice samo v enem vrstnem redu, lahko ustvarite samo en indeks v gručah na tabelo.

Medtem ko indeksi pospešijo pridobivanje vrstic v obsegu, Stavka INSERT in UPDATE je lahko počasen, ker optimizator poizvedb pregleduje indeks po vrsti, dokler ne najde ciljnega indeksa.

Indeks brez gruč v strežniku SQL Server

Indeks brez gruč vsebuje ključne vrednosti, katerih vnos je kazalec, imenovan lokator vrstic. Za gručaste tabele (tabele z gručastim indeksom) kazalec kaže na ključ v gručastem indeksu, ki nato kaže na vrstico v tabeli. Za vrstice brez gručastega indeksa kazalec kaže neposredno na vrstico tabele.

Kako ustvariti gručast indeks v strežniku SQL

Ko ustvarite tabelo s primarnim ključem, SQL Server samodejno ustvari indeksni ključ v gručah na podlagi tega primarnega ključa. Če nimate primarnega ključa, lahko izvedete naslednji stavek, da ustvarite ključ indeksa v gručah.

USTVARJANJE ZGRUČENA KAZALO <kazaloime>
NA MIZI <ime_tabele>(ime_stolpca)

V tem stavku podajate ime indeksa, ime tabele, v kateri jo želite ustvariti, in ime stolpca, ki ga želite uporabiti v indeksu.

Če dodate primarni ključ v tabelo, ki že ima gručast indeks, bo SQL Server z njim ustvaril negručni indeks.

Če želite ustvariti gručasti indeks, ki ne vključuje stolpca primarnega ključa, morate najprej opustiti omejitev primarnega ključa.

UPORABAime_baze podatkov
SPREMINJATITABELA ime_tabele
DROPOMEJITEV pk_name
POJDI

Z odstranitvijo omejitev primarnega ključa odstranite tudi gručasti indeks, ki vam omogoča ustvarjanje indeksa po meri.

Kako ustvariti negručasti indeks v strežniku SQL

Če želite ustvariti negručasti indeks, uporabite naslednji stavek.

USTVARJANJEKAZALO <kazaloime>
NA MIZI <ime_tabele>(ime_stolpca)

Ključno besedo NONCLUSTERED lahko uporabite tudi takole:

USTVARJANJE [NEGRUZDEN] KAZALO <kazaloime>
NA MIZI <ime_tabele>(ime_stolpca)

Ta stavek ustvari negručni indeks v tabeli, ki jo podate, in vključuje stolpec, ki ga navedete.

Če želite, lahko stolpce razvrstite v naraščajočem (ASC) ali padajočem (DESC) vrstnem redu.

USTVARJANJE [NEGRUZDEN] KAZALO <kazaloime>
NA MIZI <ime_tabele>(ime_stolpca ASC/DESC)

Kateri indeks izbrati?

Tako gručasti kot negručasti indeksi izboljšajo čas poizvedovanja. Če je večina vaših poizvedb operacij SELECT v več stolpcih v tabeli, so gručasti indeksi hitrejši. Vendar pa so za operacije INSERT ali UPDATE negručasti indeksi hitrejši, saj lahko optimizator poizvedbe poišče stolpec neposredno iz indeksa.

Kot lahko vidite, ti indeksi najbolje delujejo za različne poizvedbe SQL. Večini baz podatkov SQL bo zato koristilo vsaj en gručast indeks in negručasti indeksi za stolpce, ki se redno posodabljajo.

Pomen indeksov v SQL Serverju

Gručasti in negručasti indeksi vodijo do višje zmogljivosti poizvedb. Ko zaženete poizvedbo, optimizator poizvedbe pregleda indeks za lokacijo shranjevanja vrstice in nato pridobi informacije s te lokacije. To je veliko hitreje kot skeniranje vseh vrstic v tabeli.

Za reševanje zastojev pri iskanju zaznamkov lahko uporabite tudi negručaste indekse, tako da ustvarite negručast indeks za stolpce, do katerih dostopajo poizvedbe.