Teiesugused lugejad aitavad MUO-d toetada. Kui teete ostu meie saidil olevate linkide abil, võime teenida sidusettevõtte komisjonitasu. Loe rohkem.

Indeks aitab SQL Serveril ridadest andmeid kiiresti hankida. Indeksid toimivad nagu raamatute alguses olev sisukord, võimaldades teil kiiresti otsida üles lehekülg, millel teema on. Ilma indeksiteta peab SQL Server kirje leidmiseks skannima kõik tabeli read.

SQL Serveris on kahte tüüpi indekseid: rühmitatud ja rühmitamata. Uurige, mis vahe on rühmitatud ja klastrita indeksite vahel ning miks need on olulised.

Klasterdatud indeks SQL Serveris

Kobaraindeksis salvestatakse andmeread füüsiliselt järjestatud viisil võtmeväärtuse alusel. Kuna indeks sisaldab tabelit ja see saab järjestada ridu ainult ühes järjekorras, saate tabeli kohta luua ainult ühe rühmitatud indeksi.

Kuigi indeksid muudavad vahemiku ridade toomise kiiremaks, INSERT ja UPDATE avaldused võib olla aeglane, kuna päringu optimeerija skannib indeksit järjekorras, kuni leiab sihtindeksi.

Klasterdamata indeks SQL Serveris

Klasterdamata indeks sisaldab võtmeväärtusi, mille sisestus on osuti, mida nimetatakse rea asukoha määrajaks. Kobartabelite (klastriindeksiga tabelite) puhul osutab kursor rühmitatud indeksi võtmele, mis omakorda osutab tabeli reale. Kobaraindeksita ridade puhul osutab kursor otse tabelireale.

Kuidas SQL Serveris rühmitatud indeksit luua

Kui loote tabeli primaarvõtmega, loob SQL Server selle primaarvõtme alusel automaatselt rühmitatud indeksivõtme. Kui teil pole primaarvõtit, saate rühmitatud indeksivõtme loomiseks käivitada järgmise lause.

LOO KOMBERITUD INDEX <indeksnimi>
LAUAL <tabeli_nimi>(veeru_nimi)

Selles avalduses määrate indeksi nime, tabeli nime, mille alusel see luua, ja veeru nime, mida indeksis kasutada.

Kui lisate primaarvõtme tabelisse, millel on juba rühmitatud register, loob SQL Server sellega rühmitamata indeksi.

Klasterdatud indeksi loomiseks, mis ei sisalda primaarvõtme veergu, peate esmalt loobuma primaarvõtme piirangust.

KASUTADAandmebaasi_nimi
ALTERTABEL tabeli_nimi
TULLAPIIRANGU pk_nimi
MINNA

Primaarvõtme piirangute eemaldamine eemaldab ka rühmitatud indeksi, mis võimaldab teil luua kohandatud indeksi.

Kuidas luua SQL Serveris rühmitamata indeksit

Klasterdamata indeksi loomiseks kasutage järgmist lauset.

LOOINDEX <indeksnimi>
LAUAL <tabeli_nimi>(veeru_nimi)

Võite kasutada ka märksõna NONCLUSTERED, näiteks järgmiselt:

LOO [MITTEKOMBERITUD] INDEX <indeksnimi>
LAUAL <tabeli_nimi>(veeru_nimi)

See lause loob teie määratud tabelisse rühmitamata indeksi ja sisaldab teie näidatud veergu.

Soovi korral saate veerge sortida kasvavas (ASC) või kahanevas (DESC) järjekorras.

LOO [MITTEKOMBERITUD] INDEX <indeksnimi>
LAUAL <tabeli_nimi>(veeru_nimi ASC/DESC)

Millise indeksi peaksite valima?

Nii rühmitatud kui ka rühmitamata indeksid parandavad päringu aega. Kui enamik teie päringuid on SELECT-toimingud tabeli mitmes veerus, on rühmitatud indeksid kiiremad. INSERT- või UPDATE-toimingute puhul on aga rühmitamata indeksid kiiremad, kuna päringu optimeerija suudab veeru asukoha otse indeksist leida.

Nagu näete, sobivad need indeksid kõige paremini erinevad SQL-päringud. Seetõttu tuleb enamikule SQL-andmebaasidest kasu vähemalt ühest rühmitatud indeksi ja korrapäraselt värskendatavate veergude rühmitamata indeksite olemasolust.

Indekside tähtsus SQL Serveris

Klasterdatud ja rühmitamata indeksid suurendavad päringu jõudlust. Päringu käivitamisel otsib päringu optimeerija indeksist rea salvestusasukohta ja hangib seejärel teabe sellest asukohast. See on palju kiirem kui kõigi tabeli ridade skannimine.

Järjehoidjate otsimise ummikseisude lahendamiseks saate kasutada ka rühmitamata indekseid, luues klastrisse koondamata indeksi veergudele, millele päringud juurde pääsesid.