Oracle'i kordumatu indeks

Oracle I Kordumatu Indeks



Andmebaasi jõudlus on andmebaasi arendaja üks olulisi rolle. Andmebaasi optimaalse jõudluse tagamine võib oluliselt mõjutada rakendusi, mis sellesse andmebaasi loevad või sinna kirjutavad.

Kuigi andmebaasi jõudluse parandamiseks on palju võimalusi, on üks funktsioon peaaegu universaalne iga andmebaasi jaoks. Andmebaasiindeksid on andmestruktuurid või objektid, mida kasutatakse tabelist andmete otsimise kiiruse suurendamiseks.

Õige kasutamise korral võivad andmebaasiindeksid päringu kiirust vähendada peaaegu poole võrra, olenevalt sihtandmetest, paigutusest, saadaolevatest ressurssidest jne.







Sellest õpetusest saate teada, kuidas töötada Oracle'i andmebaasides kordumatute indeksitega, et vältida topeltväärtuste kättesaadavust indekseeritud veerus.



Oracle'i kordumatu indeks

Saame kasutada unikaalset indeksit tagamaks, et antud veerus ei salvestata korduvaid ridu. Kui antud indeksi veerg sisaldab unikaalset reeglit, põhjustab sellesse veergu kahe sarnase väärtusega rea ​​lisamise katse tulemuseks tõrketeade, mis viitab kordumatu piirangu rikkumisele.



Oracle'is saame luua kordumatu indeksi, kasutades lauset CREATE UNIQUE INDEX, nagu on näidatud järgmises:





LOO UNIKAALNE INDEKSI indeksi_nimi TAbeli_nimi ( veerud ) ;

Indeksis sisalduvad veerud ei aktsepteeri ühtegi topeltrida.

Unikaalse tabeliillustratsiooni näide

Unikaalse indeksi loomise ja kasutamise demonstreerimiseks kasutage järgmist tabelit.



VALI * FROM proovi_andmed;

Väljund :

Looge veerus First_Name unikaalne register

Järgmine näidislause näitab, kuidas luua unikaalset registrit, kasutades veergu first_name:

loo unikaalne register ees_nimi_unikaalne saidil sample_data ( eesnimi ) ;

Selle indeksi lubamisel ei saa me sisestada rohkem kui ühte sama eesnimega rida.

Võtke näiteks järgmine lisalause:

sisestage kausta sample_data ( id , eesnimi, ip_aadress, btc_aadress, krediitkaart, identifikaator )
väärtused ( üksteist , 'Wallas' , '169.158.70.77' , „1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q” , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Kui käivitame antud insert-lause, peaksime saama veateate, nagu on näidatud järgmises:

[ 23 000 ] [ 1 ] ORA-00001: unikaalne piirang ( HR.FIRST_NAME_UNIQUE ) rikutud

Nagu näeme, rikub antud väärtuse sisestamine veeru first_name ainulaadset piirangut.

Looge kahe veeruga kordumatu indeks

Meil võib olla ka kordumatu indeks, mis koosneb rohkem kui ühest veerust. Järgmises näites loome unikaalse indeksi, kasutades veerge first_name ja io_address:

luua unikaalne indeks verify_columns saidil sample_data ( eesnimi, ip_aadress ) ;

Samamoodi põhjustab korduvate väärtuste lisamine veergu eesnimi või ip_aadress kordumatud indeksi rikkumise vead.

Automaatsed unikaalsed indeksid

Kas olete kunagi mõelnud, mis juhtub, kui deklareerite tabeli veeru primaarvõtme või kordumatu piiranguga?

Lihtsamalt öeldes, kui määrate veeru tabeli primaarvõtmeks või määrate antud veerule kordumatu piirangu, loob andmebaasimootor automaatselt selle veeru jaoks kordumatu indeksi.

See tagab, et sellesse veergu ei lisata duplikaatväärtust.

Võtke näiteks järgmine väide:

loo tabel sample_data
(
id number,
eesnimi  varchar2 ( viiskümmend ) ,
ip_aadress  varchar2 ( kakskümmend ) ,
btc_aadress varchar2 ( viiskümmend ) ,
krediitkaart varchar2 ( viiskümmend ) ,
identifikaator  varchar2 ( 40 ) ,
piirang sample_pk primaarvõti ( id )
) ;

Eelmises näites loome tabeli ja määrame tabeli primaarvõtmeks veeru ID. Seejärel saame selle veeruga seotud unikaalse piirangu kuvamiseks (automaatselt genereeritud) käivitada järgmise käsu:

vali indeksi_nimi, indeksi_tüüp, nähtavus, olek, TABLE_NAME
kõigist_indeksitest, kus TABLE_NAME = „SAMPLE_DATA” ;

Tulemused :
Sel juhul näeme unikaalset indeksit, mille andmebaasimootor loob id veeru jaoks.

Järeldus

Sellest juhendist õppisite, kuidas luua ja kasutada Oracle'i andmebaasis ainulaadseid indekseid. Samuti õppisite, mis juhtub, kui määrate tabeli veerule primaarvõtme või kordumatu piirangu.