Oracle Luo hakemisto

Oracle Luo Hakemisto



Oraclen tietokannassa indeksi viittaa tietorakenteeseen, joka nopeuttaa tiedonhakutoimintoja tietokantataulukossa. Tästä voi kuitenkin seurata ylimääräisiä kirjoitustoimintoja ja tallennustilaa tietokantaan.

Yksi esimerkki siitä, missä tietokantaindeksistä olisi hyötyä, on asiakassuhteiden hallintajärjestelmä.







Tällaisessa järjestelmässä meillä voi olla tietokantataulukko, joka tallentaa asiakastiedot. Tämä voi sisältää nimen, osoitteen, maksutavat, yhteystiedot jne.



Jos taulukossa on useita tietueita, ehkä miljoonia, tiettyjen asiakastietojen etsiminen tietokannasta voi viedä kauan aikaa ja resursseja. Tämä on negatiivinen ilmiö, erityisesti tietokannoista, joissa suorituskyky on kriittinen.



Tämän kiertämiseksi voimme käyttää tietokantaindeksiä.





Voimme esimerkiksi luoda asiakkaan nimisarakkeeseen indeksin, jonka avulla tietokantajärjestelmä voi nopeasti löytää ja hakea tietyn asiakkaan tiedot nimen avulla. Siksi sen sijaan, että tietokantakone kävisi läpi kaikki taulukon rivit ja sarakkeet, se käyttää vain hakemistoa asiakastietojen etsimiseen.

Tässä opetusohjelmassa opit käyttämään CREATE INDEX -komentoa Oraclen tietokannassa uuden indeksin alustamiseen.



Oracle Luo indeksilausunto

Seuraavassa näkyy CREATE INDEX -käskyn syntaksi Oraclen tietokannassa:

LUO INDEX hakemiston_nimi
ON taulukon_nimi (sarake1, sarake2, ...);

Yllä oleva syntaksi luo indeksin nimeltä indeksin_nimi taulukkoon, jonka nimi on taulukon_nimi käyttämällä määritettyjä sarakkeita (sarake1, sarake2 jne.) indeksin avaimena.

Oraclessa ensisijainen avain on sarake tai sarakkeiden joukko, joka yksilöi taulukon jokaisen rivin. Oletusarvon mukaan Oracle luo automaattisesti yksilöllisen indeksin taulukon ensisijaisten avainten sarakkeisiin varmistaakseen ainutlaatuisuusrajoituksen ja parantaakseen ensisijaisen avaimen hakujen suorituskykyä.

Joissakin tapauksissa saatat kuitenkin joutua luomaan uuden hakemiston tietylle taulukolle manuaalisesti.

Katsotaanpa joitain esimerkkejä siitä, kuinka voimme saavuttaa tämän.

Esimerkki Oracle Luo hakemisto

Oletetaan, että meillä on taulukko, joka sisältää työntekijätiedot alla olevan tulosteen mukaisesti:

valitse etunimi, sukunimi, palkka, palkkauspäivä TYÖNTEKIJÖITÄ;

Oracle Luo hakemisto yhdelle sarakkeelle

Oletetaan, että haluamme luoda indeksin käyttämällä saraketta first_name. Voimme suorittaa kyselyn kuvan osoittamalla tavalla:

luo hakemiston etunimi_haku TYÖNTEKIJÄT (FIRST_NAME);

Tämä CREATE INDEX -käsky luo EMPLOYEES-taulukkoon indeksin nimeltä etunimi_haku käyttämällä hakemiston avaimena FIRST_NAME-saraketta. Tämän hakemiston avulla voidaan parantaa sellaisten kyselyiden tehokkuutta, jotka etsivät työntekijöitä heidän etunimellään.

Kun hakemisto on luotu, voimme etsiä sen avulla tiettyä työntekijää kuvan mukaisesti:

VALITSE etunimi, sukunimi, palkka, vuokrauspäivä
työntekijöiltä
WHERE etunimi = 'William';

Tulos:

Ilman first_name_lookup-indeksiä tietokantajärjestelmän pitäisi skannata koko EMPLOYEES-taulukko löytääkseen kaikki rivit, joissa FIRST_NAME-sarake on yhtä suuri kuin 'William'. Kun indeksi on kuitenkin paikallaan, tietokantajärjestelmä voi nopeasti etsiä rivit hakemistoon käyttämällä 'John'-arvoa avaimena ja noutaa sitten pyydetyt rivit taulukosta, mikä on paljon nopeampaa.

Voit tarkastella kyselyn tekemisessä käytettyjä vaiheita käyttämällä selityssuunnitelma -komentoa kuvan mukaisesti:

selitä suunnitelma SELECT etunimi, sukunimi, palkka, palkkauspäivämäärä
työntekijöiltä
WHERE etunimi = 'William';

Tuloksena oleva kyselysuunnitelma:

Esimerkki 2 – Oracle luo hakemiston useilla sarakkeilla

Vastaavasti voimme luoda indeksin, joka koostuu useammasta kuin yhdestä sarakkeesta tiettyyn taulukkoon. Oletetaan esimerkiksi, että haluamme luoda indeksin, joka koostuu sarakkeista etunimi ja sukunimi.

Voimme käyttää koodia kuvan mukaisesti:

luo hakemiston monihaku TYÖNTEKIJÄT (FIRST_NAME, LAST_NAME);

Tämä CREATE INDEX -käsky luo EMPLOYEES-taulukkoon indeksin nimeltä multi_lookup käyttämällä hakemiston avaimena sarakkeita FIRST_NAME ja LAST_NAME.

Kun se on luotu, voimme käyttää tätä indeksiä esimerkkikyselyssä esitetyllä tavalla:

VALITSE etunimi, sukunimi, palkka, vuokrauspäivä
työntekijöiltä
WHERE first_name = 'William' AND last_name = 'Smith';

Tuloksena oleva arvo:

Ja siellä sinulla on tapa nopeuttaa tietokantakyselyjäsi käyttämällä indeksejä haun laajuuden rajoittamiseksi.

Johtopäätös

Oraclen CREATE INDEX -käskyn avulla voimme luoda indeksin taulukkoon tietojen hakutoimintojen suorituskyvyn parantamiseksi. Vaikka indeksit voivat parantaa kyselyn suorituskykyä, niihin kohdistuu myös tallennustilaa koskevia rangaistuksia, mikä johtaa kirjoitusnopeuden laskuun. Käytä niitä vain tarvittaessa.