Oracle Create Index

Oracle Create Index



Oracle duomenų bazėse indeksas reiškia duomenų struktūrą, kuri pagreitina duomenų paieškos operacijų duomenų bazės lentelėje greitį. Tačiau tai gali būti baudžiama už papildomas rašymo operacijas ir saugojimo vietą jūsų duomenų bazėje.

Vienas iš pavyzdžių, kur būtų naudingas duomenų bazės indeksas, yra ryšių su klientais valdymo sistemoje.







Tokioje sistemoje galime turėti duomenų bazės lentelę, kurioje saugoma klientų informacija. Tai gali būti vardas, pavardė, adresas, mokėjimo būdai, kontaktinė informacija ir kt.



Jei lentelėje yra daug įrašų, galbūt jų milijonai, konkrečios klientų informacijos paieška duomenų bazėje gali užtrukti daug laiko ir resursų. Tai neigiamas reiškinys, ypač duomenų bazėse, kuriose našumas yra labai svarbus.



Norėdami tai apeiti, galime naudoti duomenų bazės indeksą.





Pavyzdžiui, kliento vardo stulpelyje galime sukurti indeksą, kuris leistų duomenų bazės sistemai greitai surasti ir nuskaityti konkretaus kliento informaciją naudojant vardą. Todėl vietoj to, kad duomenų bazės variklis peržiūrėtų visas lentelės eilutes ir stulpelius, jis naudoja tik indeksą klientų informacijai ieškoti.

Šiame vadove sužinosite, kaip naudoti komandą CREATE INDEX Oracle duomenų bazėje, kad inicijuotų naują indeksą.



Oracle Create Index Statement

Toliau parodyta CREATE INDEX sakinio sintaksė „Oracle“ duomenų bazėse:

KURTI INDEX indekso_pavadinimas
ON lentelės_pavadinimas (stulpelis1, stulpelis2, ...);

Aukščiau pateikta sintaksė sukuria rodyklę, pavadintą indekso_pavadinimas, lentelėje su pavadinimu lentelės_pavadinimas, naudojant nurodytus stulpelius (stulpelis1, stulpelis2 ir kt.) kaip indekso raktą.

„Oracle“ pirminis raktas yra stulpelis arba stulpelių rinkinys, unikaliai identifikuojantis kiekvieną lentelės eilutę. Pagal numatytuosius nustatymus „Oracle“ automatiškai sukuria unikalų indeksą pirminio rakto lentelės stulpeliuose, kad įgyvendintų unikalumo apribojimą ir pagerintų pirminio rakto paieškų našumą.

Tačiau kai kuriais atvejais gali tekti rankiniu būdu sukurti naują konkrečios lentelės indeksą.

Pažvelkime į keletą pavyzdžių, kaip galime tai pasiekti.

„Oracle“ kūrimo indekso pavyzdys

Tarkime, kad turime lentelę su darbuotojo informacija, kaip parodyta toliau pateiktame išvestyje:

pasirinkti vardą_vardą, pavardę, atlyginimą, įdarbinimo_datą iš DARBUOTOJŲ;

„Oracle“ sukurkite indeksą vienam stulpeliui

Tarkime, kad norime sukurti indeksą naudodami stulpelį first_name. Galime vykdyti užklausą, kaip parodyta:

sukurti indeksą vardo_vardas DARBUOTOJAI(FIRST_NAME);

Šis CREATE INDEX sakinys sukuria indeksą, pavadintą first_name_lookup lentelėje DARBUOTOJAI, naudojant stulpelį FIRST_NAME kaip indekso raktą. Šis indeksas gali būti naudojamas siekiant pagerinti užklausų, kurios ieško darbuotojų pagal jų vardą, našumą.

Sukūrę indeksą, galime jį naudoti norėdami ieškoti konkretaus darbuotojo, kaip parodyta:

PASIRINKITE vardą, pavardę, atlyginimą, nuomos_datą
IŠ darbuotojų
WHERE first_name = 'Viljamas';

Rezultatas:

Be first_name_lookup indekso, duomenų bazės sistema turėtų nuskaityti visą lentelę EMPLOYEES, kad surastų visas eilutes, kuriose FIRST_NAME stulpelis yra lygus 'William'. Tačiau, kai indeksas yra vietoje, duomenų bazės sistema gali greitai ieškoti eilučių indeksuokite naudodami „Jonas“ reikšmę kaip raktą ir tada iš lentelės nuskaitykite prašomas eilutes, o tai bus daug greičiau.

Galite peržiūrėti užklausos veiksmus naudodami paaiškinimo plano komandą, kaip parodyta:

paaiškinkite planą SELECT vardo_vardas, pavardė, atlyginimas, nuomos_data
IŠ darbuotojų
WHERE first_name = 'Viljamas';

Gautas užklausų planas:

2 pavyzdys – Oracle sukurti indeksą su keliais stulpeliais

Panašiai galime sukurti indeksą, sudarytą iš daugiau nei vieno stulpelio nurodytoje lentelėje. Pavyzdžiui, tarkime, kad norime sukurti indeksą, sudarytą iš stulpelių vardas_vardas ir pavardė.

Mes galime naudoti kodą, kaip parodyta:

sukurti indeksą multi_lookup EMPLOYEES(FIRST_NAME, LAST_NAME);

Šis CREATE INDEX teiginys sukuria indeksą, pavadintą multi_lookup lentelėje EMPLOYEES, naudojant stulpelius FIRST_NAME ir LAST_NAME kaip indekso raktą.

Sukūrę šį indeksą galime naudoti, kaip parodyta pavyzdinėje užklausoje, kaip parodyta:

PASIRINKITE vardą, pavardę, atlyginimą, nuomos_datą
IŠ darbuotojų
WHERE first_name = 'Viljamas' AND pavardė = 'Smitas';

Gauta vertė:

Ir čia jūs turite būdą pagreitinti duomenų bazės užklausas naudodami indeksus, kad apribotumėte paieškos apimtį.

Išvada

CREATE INDEX teiginys „Oracle“ leidžia sukurti lentelės indeksą, kad pagerintume duomenų gavimo operacijų našumą. Tačiau, nors indeksai gali pagerinti užklausos našumą, jiems taip pat taikomos nuobaudos dėl saugyklos vietos, dėl ko sumažėja įrašymo sparta, naudokite juos tik tada, kai reikia.