Oracle Create Index

Oracle Create Index



V databázích Oracle se index vztahuje k datové struktuře, která zvyšuje rychlost operací načítání dat v databázové tabulce. To však může mít za následek další operace zápisu a úložný prostor ve vaší databázi.

Jedním z příkladů, kde by byl užitečný databázový index, je systém řízení vztahů se zákazníky.







V takovém systému můžeme mít databázovou tabulku, která uchovává informace o zákaznících. To může zahrnovat jméno, adresu, platební metody, kontaktní údaje atd.



Pokud tabulka obsahuje mnoho záznamů, možná jich jsou miliony, může hledání konkrétních informací o zákaznících z databáze trvat dlouho a vyžadovat zdroje. To je negativní jev, zejména v databázích, kde je výkon kritický.



Abychom to obešli, můžeme použít databázový index.





Můžeme například vytvořit index ve sloupci se jménem zákazníka, který by databázovému systému umožnil rychle najít a získat informace o konkrétním zákazníkovi pomocí jména. Namísto toho, aby databázový stroj procházel všechny řádky a sloupce v tabulce, používá k vyhledání informací o zákaznících pouze index.

V tomto tutoriálu se naučíte, jak použít příkaz CREATE INDEX v databázi Oracle k inicializaci nového indexu.



Oracle Create Index Statement

Následující text ukazuje syntaxi příkazu CREATE INDEX v databázích Oracle:

CREATE INDEX index_name
ON název_tabulky (sloupec1, sloupec2, ...);

Výše uvedená syntaxe vytvoří index s názvem název_indexu v tabulce s názvem název_tabulky pomocí zadaných sloupců (sloupec1, sloupec2 atd.) jako klíče pro index.

V Oracle je primární klíč sloupec nebo sada sloupců, které jednoznačně identifikují každý řádek v tabulce. Ve výchozím nastavení Oracle automaticky vytváří jedinečný index ve sloupcích primárního klíče tabulky, aby vynutil omezení jedinečnosti a zlepšil výkon vyhledávání primárního klíče.

V některých případech však může být nutné vytvořit nový index pro konkrétní tabulku ručně.

Podívejme se na několik příkladů, jak toho můžeme dosáhnout.

Příklad vytvoření indexu Oracle

Předpokládejme, že máme tabulku obsahující informace o zaměstnancích, jak je uvedeno ve výstupu níže:

vyberte jméno, příjmení, plat, datum přijetí od ZAMĚSTNANCŮ;

Oracle vytváří index pro jeden sloupec

Předpokládejme, že chceme vytvořit index pomocí sloupce first_name. Můžeme spustit dotaz, jak je znázorněno:

vytvořit index jméno_vyhledání u ZAMĚSTNANCŮ(JMÉNO);

Tento příkaz CREATE INDEX vytvoří index s názvem vyhledávání_jména v tabulce EMPLOYEES pomocí sloupce FIRST_NAME jako klíče pro index. Tento index lze použít ke zlepšení výkonu dotazů, které hledají zaměstnance podle jejich křestního jména.

Jakmile máme vytvořený index, můžeme jej použít k vyhledání konkrétního zaměstnance, jak je znázorněno:

SELECT jméno, příjmení, plat, datum přijetí
OD zaměstnanců
WHERE first_name = 'William';

Výsledek:

Bez indexu first_name_lookup by databázový systém musel prohledat celou tabulku ZAMĚSTNANCI, aby našel všechny řádky, ve kterých je sloupec FIRST_NAME roven 'William.' Avšak s indexem na místě může databázový systém rychle vyhledat řádky v index pomocí hodnoty 'John' jako klíče a poté načtěte požadované řádky z tabulky, což bude mnohem rychlejší.

Kroky použité při vytváření dotazu můžete zobrazit pomocí příkazu vysvětlení plánu, jak je znázorněno:

vysvětlit plán pro SELECT jméno, příjmení, plat, datum_náboru
OD zaměstnanců
WHERE first_name = 'William';

Výsledný plán dotazů:

Příklad 2 – Oracle Create Index s více sloupci

Podobně můžeme vytvořit index složený z více než jednoho sloupce v dané tabulce. Předpokládejme například, že chceme vytvořit index složený ze sloupců first_name a last_name.

Můžeme použít kód, jak je znázorněno:

vytvořit index multi_lookup on EMPLOYEES(FIRST_NAME, LAST_NAME);

Tento příkaz CREATE INDEX vytvoří index s názvem multi_lookup v tabulce EMPLOYEES pomocí sloupců FIRST_NAME a LAST_NAME jako klíče pro index.

Po vytvoření můžeme tento index použít, jak je znázorněno v ukázkovém dotazu, jak je znázorněno:

SELECT jméno, příjmení, plat, datum přijetí
OD zaměstnanců
WHERE first_name = 'William' AND last_name = 'Smith';

Výsledná hodnota:

A tam máte metodu, jak urychlit databázové dotazy pomocí indexů k omezení rozsahu vyhledávání.

Závěr

Příkaz CREATE INDEX v Oracle nám umožňuje vytvořit index na tabulce pro zlepšení výkonu operací načítání dat. I když indexy mohou zlepšit výkon dotazů, jsou také spojeny s penalizacemi za úložný prostor, což vede ke snížení rychlosti zápisu, používejte je pouze v případě potřeby.