SQLShack (Suomi)
Hakemistoilla nopeutetaan kyselyprosessia SQL Serverissä, mikä johtaa korkeaan esitys. Ne ovat samanlaisia kuin oppikirjan hakemistot. Oppikirjoissa, jos haluat siirtyä tiettyyn lukuun, siirryt hakemistoon, etsit luvun sivunumeron ja siirryt suoraan tälle sivulle. Ilman hakemistoja haluamasi luvun löytäminen olisi ollut hyvin hidasta.
Sama koskee tietokantojen hakemistoja. Ilman hakemistoja DBMS: n täytyy käydä läpi kaikki taulukon tietueet saadakseen halutut tulokset. Tätä prosessia kutsutaan taulukon skannaukseksi ja se on erittäin hidasta. Toisaalta, jos luot indeksit, tietokanta menee ensin kyseiseen hakemistoon ja noutaa sitten vastaavat taulukotietueet suoraan.
SQL Serverissä on kahden tyyppisiä hakemistoja:
- klusteroitu hakemisto
- ei-klusteroitu hakemisto
Klusteroitu hakemisto
Ryhmittynyt hakemisto määrittää järjestyksen, jossa tiedot tallennetaan fyysisesti taulukkoon. Taulukotiedot voidaan lajitella vain tavalla, joten taulukkoa kohden voi olla vain yksi klusteroitu indeksi. SQL Serverissä ensisijaisen avaimen rajoitus luo ryhmitetyn hakemiston kyseiseen sarakkeeseen.
Katsotaanpa. Luo ensin ”schooldb” -kenttään ”student” -taulukko suorittamalla seuraava komentosarja tai varmista, että tietokanta on täysin varmuuskopioitu, jos käytät reaaliaikaisia tietojasi:
1
2
3
4
5
6
7
8
9
10
11
12
13
|
Luo tietokanta schooldb
LUO TAULUKKO opiskelija
(
id INT ALKUPERÄINEN AVAIN,
nimi VARCHAR (50) EI NULL,
sukupuoli VARCHAR (50) EI NULL,
DOB päivämäärä EI NULL,
total_score INT EI NULL,
kaupunki VARCHAR (50) EI NULL
)
|
Ilmoitus täällä ”opiskelija” -taulukossa olemme asettaneet prima ry avaimen rajoitus ”id” -sarakkeessa. Tämä luo klusteroidun hakemiston ”id” -sarakkeeseen automaattisesti. Jos haluat nähdä kaikki tietyn taulukon indeksit, suorita ”sp_helpindex” tallennettu toiminto. Tämä tallennettu menettely hyväksyy taulukon nimen parametriksi ja hakee kaikki taulukon indeksit. Seuraava kysely hakee opiskelijataulukosta luodut hakemistot.
1
2
3
4
5
|
KÄYTÄ schooldb
SUORITA sp_helpindex -opiskelija
|
Yllä oleva kysely palauttaa tämän tuloksen:
hakemistonimi | index_description | index_keys |
PK__student__3213E83F7F60ED59 | klusteroitu, yksilöllinen, ensisijainen avain, joka sijaitsee ENSISIJAISESSA | id |
Lähdössä näkyy ainoa hakemisto. Tämä on hakemisto, joka luotiin automaattisesti id-sarakkeen ensisijaisen avaimen rajoituksen vuoksi.
Tämä klusteroitu hakemisto tallentaa tietueen opiskelijataulukoon ”id”: n nousevassa järjestyksessä. Siksi, jos lisätyn tietueen tunnus on 5, tietue lisätään taulukon 5. riville ensimmäisen rivin sijaan. Vastaavasti, jos neljännen tietueen tunnus on 3, se lisätään kolmannelle riville neljännen rivin sijasta. Tämä johtuu siitä, että klusteroidun indeksin on ylläpidettävä tallennettujen tietueiden fyysistä järjestystä indeksoidun sarakkeen eli id: n mukaan. Jos haluat nähdä tämän järjestyksen toiminnassa, suorita seuraava komentosarja:
Yllä oleva komentosarja lisää kymmenen tietuetta opiskelijataulukkoon. Huomaa, että tietueet lisätään ”id” -sarakkeen arvojen satunnaisessa järjestyksessä. Mutta id-sarakkeessa olevan oletusklusteroidun hakemiston vuoksi tietueet tallennetaan fyysisesti ”id” -sarakkeen arvojen nousevaan järjestykseen. Suorita seuraava SELECT-käsky hakeaksesi tietueet opiskelijataulukosta.
1
2
3
4
5
|
KÄYTÄ schooldb
VALITSE * FROM opiskelijasta
|
Tietueet noudetaan seuraavassa järjestyksessä:
Mukautetun klusteroidun hakemiston luominen
Voit luoda oman mukautetun hakemiston sekä oletusklusteriryhmän. Uuden klusteroidun hakemiston luominen taulukkoon on ensin poistettava edellinen hakemisto.
Jos haluat poistaa hakemiston, siirry ”Object Explorer- > Tietokannat- > Database_Name- > Taulukot- > Taulukon_nimi – > Hakemistot”. Napsauta hiiren kakkospainikkeella poistettavaa hakemistoa ja valitse POISTA . Katso alla oleva kuvakaappaus.
Nyt, Luo uusi klusteroitu hakemisto suorittamalla seuraava komentosarja:
1
2
3
4
5
6
|
käytä schooldb
LUO RYHMÄTY HAKEMISTO IX_tblStudent_Gender_Score
ON opiskelija (sukupuoli ASC, yhteensä_pisteet DESC)
|
Luontiprosessi klusteroitu indeksi on samanlainen kuin normaali indeksi yhtä poikkeusta lukuun ottamatta. Klusteroidun hakemiston kanssa sinun on käytettävä avainsanaa ”CLUSTERED” ennen hakemistoa ”INDEX”.
Yllä oleva komentosarja luo klusteroidun hakemiston nimeltä ”IX_tblStudent_Gender_Score” opiskelijataulukkoon. Tämä hakemisto luodaan ”gender” ja ”total_score” -sarakkeisiin. Useille sarakkeille luotua hakemistoa kutsutaan ”yhdistelmähakemisto”.
Yllä oleva hakemisto lajittelee ensin kaikki tietueet sukupuolen nousevassa järjestyksessä. Jos sukupuoli on sama kahdelle tai useammalle tietueelle, tietueet lajitellaan niiden arvojen laskevassa järjestyksessä niiden ”yhteensä_pisteet” -sarakkeessa. Voit luoda klusteroidun hakemiston myös yhteen sarakkeeseen. Jos valitset kaikki tietueet opiskelijataulukko, ne noudetaan seuraavassa järjestyksessä:
Ei-klusteroidut hakemistot
Ryhmittymätön hakemisto ei lajittele taulukon sisällä olevia fyysisiä tietoja. ryhmittymätön hakemisto tallennetaan yhteen paikkaan ja taulukotiedot tallentuvat toiseen paikkaan. Tämä on samanlainen kuin oppikirja, jossa kirjan sisältö sijaitsee yhdessä paikassa ja hakemisto sijaitsee toisessa paikassa. Tämä sallii useamman kuin yhden ryhmittymättömän hakemisto taulukkoa kohti.
Tässä on tärkeää mainita, että taulukon sisällä tiedot lajitellaan klusteroidun hakemiston avulla. Ryhmittämättömän indeksin sisällä tiedot kuitenkin tallennetaan määritetyssä järjestyksessä. Hakemisto sisältää sarakearvot, joihin hakemisto luodaan, ja sen tietueen osoite, johon sarakkeen arvo kuuluu.
Kun kysely lähetetään saraketta vastaan, johon hakemisto luodaan, tietokanta siirtyy ensin hakemistoon ja etsii vastaavan rivin osoitetta taulukosta. Sitten se siirtyy kyseiselle rivin osoitteelle ja hakee muut sarakearvot. Tämän lisävaiheen ansiosta ryhmittymättömät indeksit ovat hitaampia kuin klusteroidut hakemistot.
Ryhmittymättömän indeksin luominen
Ryhmittämättömän indeksin luomisen syntaksi on samanlainen kuin ryhmitelty indeksi. Ryhmittymättömissä hakemistoissa käytetään kuitenkin ”RYHMÄTTÖMÄT” -kohdan sijaan ”NONCLUSTERED”. Katso seuraava komentosarja.
1
2
3
4
5
6
|
käytä schooldb
LUOMA HAKEMATON HAKEMISTO IX_tblStudent_Name
ON opiskelija (nimi ASC)
|
Yllä oleva komentosarja luo ryhmittymättömän hakemiston opiskelijataulukon ”nimi” -sarakkeeseen. Hakemisto lajittelee nimen mukaan nousevassa järjestyksessä. Kuten aiemmin sanoimme, taulukon tiedot ja hakemisto tallennetaan eri paikkoihin. Taulukotietueet lajitellaan klusteroidun hakemiston mukaan, jos sellaista on. Hakemisto lajitellaan määritelmän mukaan ja tallennetaan erikseen. pöydältä.
Opiskelijataulukon tiedot:
IX_tblStudent_Name Index Data
nimi | riviosoite |
Alan | riviosoite |
Elis | riviosoite |
iloinen | riviosoite |
Jon | riviosoite |
Joseph | riviosoite |
Kate | riviosoite |
Laura | riviosoite |
hiiret | riviosoite |
Sara | riviosoite |
Viisas | riviosoite |
Huomautus , tässä hakemistossa jokaisella rivillä on sarake, joka tallentaa sen rivin osoitteen, johon nimi kuuluu. Joten jos kysely lähetetään ”Jon” -opiskelijan sukupuolen ja DOB: n hakemiseksi, tietokanta etsii ensin nimestä ”Jon” hakemistosta. Sen jälkeen se lukee Jon-rivin osoitteen ja siirtyy suoraan kyseiselle opiskelija-taulukon riville hakemaan Jonin sukupuolen ja DOB: n.
Päätelmä
Keskustelusta löydämme seuraavat erot klusteroitujen ja ryhmittymättömien hakemistojen välillä.
- Taulukkoa kohden voi olla vain yksi klusteroitu indeksi. Voit kuitenkin luoda useita ei-klusteroituja hakemistoja yhteen taulukkoon.
- Ryhmitetyt hakemistot lajittelevat vain taulukot. Siksi ne eivät kuluta ylimääräistä tallennustilaa. Ryhmittymättömät indeksit tallennetaan erilliseen paikkaan todellisesta taulukosta, joka vie enemmän tallennustilaa.
- Ryhmittyvät indeksit ovat nopeampi kuin ryhmittymättömät indeksit, koska niihin ei sisälly ylimääräisiä hakuvaiheita.
Muita Benin hienoja artikkeleita
Ero identiteetin & välillä SQL Server -palvelimessa
Mitä eroa on klusteroiduilla ja ei-klusteroiduilla hakemistoilla SQL Serverissä?
- Kirjoittaja
- Viimeisimmät kirjoitukset
Näytä kaikki Ben Richardsonin viestit
- Power BI: Waterfall Charts and Combined Visuals – 19. tammikuuta 2021
- Power BI : Ehdollinen muotoilu ja tietovärit toiminnassa – 14. tammikuuta 2021
- Power BI: Tietojen tuominen SQL Serveristä ja MySQL: stä – 12. tammikuuta 2021
573 279 näyttökertaa
© 2021 Quest Software Inc. KAIKKI OIKEUDET PIDETTÄVÄT. | GDPR | Käyttöehdot | Tietosuoja