Oracle Create Index

Oracle Create Index



V databázach Oracle sa index vzťahuje na údajovú štruktúru, ktorá zvyšuje rýchlosť operácií získavania údajov v databázovej tabuľke. To však môže mať za následok ďalšie operácie zápisu a úložný priestor vo vašej databáze.

Jedným z príkladov, kde by bol databázový index užitočný, je systém riadenia vzťahov so zákazníkmi.







V takomto systéme môžeme mať databázovú tabuľku, ktorá uchováva informácie o zákazníkoch. Môže to zahŕňať meno, adresu, spôsoby platby, kontaktné informácie atď.



Ak tabuľka obsahuje veľa záznamov, možno ich sú milióny, hľadanie konkrétnych informácií o zákazníkoch z databázy môže trvať dlho a dlho. Toto je negatívny jav, najmä v databázach, kde je výkon kritický.



Aby sme to obišli, môžeme použiť databázový index.





Napríklad môžeme vytvoriť index v stĺpci s menom zákazníka, ktorý umožní databázovému systému rýchlo nájsť a získať informácie o konkrétnom zákazníkovi pomocou mena. Preto namiesto toho, aby databázový stroj prechádzal všetkými riadkami a stĺpcami v tabuľke, používa iba index na vyhľadávanie informácií o zákazníkoch.

V tomto návode sa naučíte, ako použiť príkaz CREATE INDEX v databáze Oracle na inicializáciu nového indexu.



Oracle Create Index Statement

Nasledujúci text zobrazuje syntax príkazu CREATE INDEX v databázach Oracle:

CREATE INDEX index_name
ON názov_tabuľky (stĺpec1, stĺpec2, ...);

Vyššie uvedená syntax vytvorí index s názvom názov_indexu v tabuľke s názvom názov_tabulky pomocou špecifikovaných stĺpcov (stĺpec1, stĺpec2 atď.) ako kľúča pre index.

V systéme Oracle je primárny kľúč stĺpec alebo skupina stĺpcov, ktoré jedinečne identifikujú každý riadok v tabuľke. V predvolenom nastavení Oracle automaticky vytvára jedinečný index v stĺpcoch primárneho kľúča tabuľky, aby vynútil obmedzenie jedinečnosti a zlepšil výkon vyhľadávania primárneho kľúča.

V niektorých prípadoch však možno budete musieť vytvoriť nový index pre konkrétnu tabuľku manuálne.

Pozrime sa na niekoľko príkladov, ako to môžeme dosiahnuť.

Príklad vytvorenia indexu Oracle

Predpokladajme, že máme tabuľku obsahujúcu informácie o zamestnancoch, ako je uvedené vo výstupe nižšie:

vyberte meno, priezvisko, plat, dátum prijatia zo ZAMESTNANCOV;

Oracle vytvorí index pre jeden stĺpec

Predpokladajme, že chceme vytvoriť index pomocou stĺpca first_name. Dotaz môžeme spustiť takto:

vytvoriť index krstné_meno_lookup on EMPLOYEES(FIRST_NAME);

Tento príkaz CREATE INDEX vytvorí index s názvom first_name_lookup v tabuľke EMPLOYEES pomocou stĺpca FIRST_NAME ako kľúča pre index. Tento index možno použiť na zlepšenie výkonu dopytov, ktoré hľadajú zamestnancov podľa ich krstného mena.

Po vytvorení indexu ho môžeme použiť na vyhľadanie konkrétneho zamestnanca, ako je znázornené:

SELECT meno, priezvisko, plat, dátum prijatia
OD zamestnancov
WHERE first_name = 'William';

výsledok:

Bez indexu first_name_lookup by databázový systém musel prehľadať celú tabuľku EMPLOYEES, aby našiel všetky riadky, v ktorých sa stĺpec FIRST_NAME rovná 'William.' Avšak so zavedeným indexom môže databázový systém rýchlo vyhľadať riadky v index pomocou hodnoty 'John' ako kľúča a potom získajte požadované riadky z tabuľky, čo bude oveľa rýchlejšie.

Môžete si pozrieť kroky použité pri vytváraní dotazu pomocou príkazu vysvetli plán, ako je to znázornené:

vysvetliť plán pre SELECT meno, priezvisko, plat, dátum prijatia
OD zamestnancov
WHERE first_name = 'William';

Výsledný plán dopytov:

Príklad 2 – Oracle Create Index s viacerými stĺpcami

Podobne môžeme vytvoriť index pozostávajúci z viac ako jedného stĺpca v danej tabuľke. Predpokladajme napríklad, že chceme vytvoriť index pozostávajúci zo stĺpcov first_name a last_name.

Môžeme použiť kód, ako je znázornené:

vytvoriť index multi_lookup on EMPLOYEES(FIRST_NAME, LAST_NAME);

Tento príkaz CREATE INDEX vytvorí index s názvom multi_lookup v tabuľke EMPLOYEES pomocou stĺpcov FIRST_NAME a LAST_NAME ako kľúča pre index.

Po vytvorení môžeme tento index použiť, ako je znázornené vo vzorovom dotaze, ako je znázornené:

SELECT meno, priezvisko, plat, dátum prijatia
OD zamestnancov
WHERE first_name = 'William' AND last_name = 'Smith';

Výsledná hodnota:

A tu máte metódu na zrýchlenie vašich databázových dotazov pomocou indexov na obmedzenie rozsahu vyhľadávania.

Záver

Príkaz CREATE INDEX v Oracle nám umožňuje vytvoriť index na tabuľke, aby sme zlepšili výkon operácií získavania údajov. Aj keď indexy môžu zlepšiť výkon dotazov, sú spojené aj s penalizáciami za úložný priestor, čo vedie k operáciám zníženej rýchlosti zápisu, používajte ich iba v prípade potreby.