Čeprav obstajajo številni načini za izboljšanje zmogljivosti baze podatkov, je ena funkcija skoraj univerzalna za vsako bazo podatkov. Indeksi baz podatkov so podatkovne strukture ali objekti, ki se uporabljajo za izboljšanje hitrosti pridobivanja podatkov iz tabele.
Če se pravilno uporabljajo, lahko indeksi baze podatkov zmanjšajo hitrost poizvedbe za skoraj polovico, odvisno od ciljnih podatkov, postavitve, razpoložljivih virov itd.
V tej vadnici se boste naučili, kako delati z edinstvenimi indeksi v bazah podatkov Oracle, da preprečite razpoložljivost podvojenih vrednosti v indeksiranem stolpcu.
Oracle Unique Index
Uporabimo lahko edinstven indeks, da zagotovimo, da v določenem stolpcu niso shranjene podvojene vrstice. Če stolpec danega indeksa vsebuje edinstveno pravilo, bo poskus dodajanja dveh vrstic s podobno vrednostjo v ta stolpec povzročil napako, ki kaže na kršitev edinstvene omejitve.
V Oraclu lahko ustvarimo edinstven indeks z uporabo stavka CREATE UNIQUE INDEX, kot je prikazano v nadaljevanju:
CREATE UNIQUE INDEX index_name ON table_name ( stolpce ) ;
Stolpci, ki so vključeni v indeks, ne bodo sprejeli nobenih podvojenih vrstic.
Primer edinstvene ilustracije tabele
Če želite prikazati, kako ustvariti in uporabiti edinstven indeks, vzemite naslednjo tabelo:
IZBERI * FROM vzorčni_podatki;
Izhod :
Ustvarite enolični indeks v stolpcu First_Name
Naslednji primer izjave prikazuje, kako ustvariti edinstven indeks z uporabo stolpca first_name:
ustvari edinstveni indeks first_name_unique na sample_data ( ime ) ;Če omogočite ta indeks, ne moremo vstaviti več kot ene vrstice z istim imenom.
Vzemimo za primer naslednji stavek za vstavljanje:
vstavite v sample_data ( id , first_name, ip_address, btc_address, credit_card, identifikator )vrednote ( enajst , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;
Če zaženemo dani stavek za vstavljanje, bi morali dobiti napako, kot je prikazano v naslednjem:
[ 23000 ] [ 1 ] ORA-00001: edinstvena omejitev ( HR.FIRST_NAME_UNIQUE ) kršenaKot lahko vidimo, vstavljanje podane vrednosti krši enolično omejitev za stolpec first_name.
Ustvarite edinstven indeks z dvema stolpcema
Lahko imamo tudi edinstven indeks, ki je sestavljen iz več kot enega stolpca. V naslednjem primeru ustvarimo edinstven indeks z uporabo stolpcev first_name in io_address:
ustvari edinstven indeks verify_columns na sample_data ( first_name, ip_address ) ;Podobno bo dodajanje podvojenih vrednosti za stolpec first_name ali ip_address povzročilo edinstvene napake kršitve indeksa.
Samodejni edinstveni indeksi
Ste se kdaj vprašali, kaj se zgodi, ko deklarirate stolpec tabele s primarnim ključem ali edinstveno omejitvijo?
Preprosto povedano, če nastavite stolpec kot primarni ključ tabele ali danemu stolpcu dodelite edinstveno omejitev, mehanizem zbirke podatkov samodejno ustvari edinstven indeks za ta stolpec.
To zagotavlja, da v ta stolpec ni vstavljena podvojena vrednost.
Vzemimo za primer naslednjo izjavo:
ustvari tabelo sample_data(
id številka,
ime_varchar2 ( petdeset ) ,
ip_naslov varchar2 ( dvajset ) ,
btc_naslov varchar2 ( petdeset ) ,
kreditna_kartica varchar2 ( petdeset ) ,
identifikator varchar2 ( 40 ) ,
primarni ključ omejitve sample_pk ( id )
) ;
V prejšnjem primeru ustvarimo tabelo in nastavimo stolpec id kot primarni ključ tabele. Nato lahko za ogled enolične omejitve, povezane s tem stolpcem (samodejno ustvarjeno), zaženemo naslednji ukaz:
izberite ime_indeksa, vrsta_indeksa, vidnost, status, TABLE_NAMEiz vseh_indeksov, kjer je TABLE_NAME = 'SAMPLE_DATA' ;
Rezultati :
V tem primeru lahko vidimo edinstveni indeks, ki ga ustvari mehanizem zbirke podatkov za stolpec id.
Zaključek
V tem priročniku ste se naučili, kako ustvariti in uporabljati edinstvene indekse v bazi podatkov Oracle. Naučili ste se tudi, kaj se zgodi, ko stolpcu tabele dodelite primarni ključ ali edinstveno omejitev.