Oracle Create Index

Oracle Create Index



U Oracle bazama podataka, indeks se odnosi na podatkovnu strukturu koja povećava brzinu operacija dohvaćanja podataka u tablici baze podataka. Međutim, to može dovesti do dodatnih operacija pisanja i prostora za pohranu u vašoj bazi podataka.

Jedan primjer gdje bi indeks baze podataka bio koristan je sustav upravljanja odnosima s kupcima.







U takvom sustavu možemo imati tablicu baze podataka koja pohranjuje informacije o kupcima. To može uključivati ​​ime, adresu, načine plaćanja, podatke za kontakt itd.



Ako tablica sadrži mnogo zapisa, možda milijune, može biti potrebno mnogo vremena i resursa za traženje specifičnih podataka o kupcima iz baze podataka. Ovo je negativan fenomen, posebno u bazama podataka gdje je izvedba kritična.



Da bismo to zaobišli, možemo koristiti indeks baze podataka.





Na primjer, možemo stvoriti indeks na stupcu s imenom kupca koji bi omogućio sustavu baze podataka da brzo pronađe i dohvati informacije o određenom kupcu pomoću imena. Stoga, umjesto da motor baze podataka prolazi kroz sve retke i stupce u tablici, on koristi samo indeks za traženje podataka o kupcima.

U ovom ćete vodiču naučiti kako koristiti naredbu CREATE INDEX u Oracle bazi podataka za pokretanje novog indeksa.



Oracle Create Index Statement

Sljedeće prikazuje sintaksu naredbe CREATE INDEX u Oracle bazama podataka:

CREATE INDEX index_name
ON table_name (stupac1, stupac2, ...);

Gornja sintaksa stvara indeks pod nazivom index_name u tablici s imenom table_name koristeći navedene stupce (stupac1, stupac2, itd.) kao ključ za indeks.

U Oracleu, primarni ključ je stupac ili skup stupaca koji jedinstveno identificira svaki red u tablici. Prema zadanim postavkama, Oracle automatski stvara jedinstveni indeks na stupcima primarnog ključa tablice kako bi nametnuo ograničenje jedinstvenosti i poboljšao izvedbu pretraživanja primarnog ključa.

Međutim, u nekim ćete slučajevima možda trebati ručno izraditi novi indeks za određenu tablicu.

Pogledajmo neke primjere kako to možemo postići.

Primjer Oracle Create Index

Pretpostavimo da imamo tablicu koja sadrži informacije o zaposlenicima kao što je prikazano u donjem izlazu:

odaberite ime, prezime, plaću, datum zapošljavanja od ZAPOSLENIKA;

Oracle Stvori indeks za jedan stupac

Pretpostavimo da želimo stvoriti indeks pomoću stupca first_name. Možemo pokrenuti upit kao što je prikazano:

stvoriti indeks first_name_lookup na EMPLOYEES(FIRST_NAME);

Ova izjava CREATE INDEX stvara indeks pod nazivom first_name_lookup u tablici EMPLOYEES, koristeći stupac FIRST_NAME kao ključ za indeks. Ovaj se indeks može koristiti za poboljšanje izvedbe upita koji traže zaposlenike po imenu.

Nakon što izradimo indeks, možemo ga koristiti za traženje određenog zaposlenika kao što je prikazano:

SELECT first_name, last_name, salary, hire_date
OD zaposlenika
WHERE first_name = 'William';

Proizlaziti:

Bez indeksa first_name_lookup, sustav baze podataka bi morao skenirati cijelu tablicu EMPLOYEES kako bi pronašao sve retke u kojima je stupac FIRST_NAME jednak 'William'. Međutim, s indeksom na mjestu, sustav baze podataka može brzo potražiti retke u indeks koristeći vrijednost 'John' kao ključ, a zatim dohvaća tražene retke iz tablice, što će biti mnogo brže.

Možete vidjeti korake korištene prilikom postavljanja upita pomoću naredbe objasni plan kao što je prikazano:

objasnite plan za SELECT first_name, last_name, salary, hire_date
OD zaposlenika
WHERE first_name = 'William';

Rezultirajući plan upita:

Primjer 2 – Oracle Stvaranje indeksa s više stupaca

Slično, možemo stvoriti indeks koji se sastoji od više od jednog stupca u danoj tablici. Na primjer, pretpostavimo da želimo stvoriti indeks koji se sastoji od stupca first_name i last_name.

Možemo koristiti kod kao što je prikazano:

stvoriti indeks multi_lookup na EMPLOYEES(FIRST_NAME, LAST_NAME);

Ova izjava CREATE INDEX stvara indeks pod nazivom multi_lookup u tablici EMPLOYEES, koristeći stupce FIRST_NAME i LAST_NAME kao ključ za indeks.

Nakon što ga izradimo, možemo koristiti ovaj indeks kao što je prikazano u uzorku upita kao što je prikazano:

SELECT first_name, last_name, salary, hire_date
OD zaposlenika
WHERE first_name = 'William' AND last_name = 'Smith';

Rezultirajuća vrijednost:

I tu imate metodu za ubrzavanje upita baze podataka korištenjem indeksa za ograničavanje opsega pretraživanja.

Zaključak

Naredba CREATE INDEX u Oracleu omogućuje nam stvaranje indeksa na tablici kako bismo poboljšali izvedbu operacija dohvaćanja podataka. Međutim, iako indeksi mogu poboljšati izvedbu upita, oni također izazivaju kazne prostora za pohranu, što dovodi do smanjene brzine pisanja, koristite ih samo kada je potrebno.