Oracle Unique Index

Oracle Unique Index



Databaseydelse er en af ​​de væsentlige roller for en databaseudvikler. At sikre, at din database kører med optimal ydeevne, kan have stor indflydelse på applikationerne, der læser eller skriver til databasen.

Selvom der findes adskillige måder at forbedre databasens ydeevne på, er én funktion næsten universel for enhver database. Databaseindekser er datastrukturer eller objekter, der bruges til at øge hastigheden af ​​datahentningen fra tabellen.

Når de bruges korrekt, kan databaseindekser reducere hastigheden af ​​en forespørgsel med næsten det halve, afhængigt af måldata, layout, tilgængelige ressourcer osv.







I denne øvelse skal du lære, hvordan du arbejder med unikke indekser i Oracle-databaser for at forhindre tilgængeligheden af ​​duplikerede værdier i en indekseret kolonne.



Oracle Unique Index

Vi kan bruge et unikt indeks til at sikre, at ingen duplikerede rækker gemmes i en given kolonne. Hvis kolonnen i et givet indeks indeholder en unik regel, vil forsøg på at tilføje to rækker med en lignende værdi i den kolonne resultere i en fejl, som indikerer en entydig overtrædelse af begrænsningen.



I Oracle kan vi oprette et unikt indeks ved hjælp af CREATE UNIQUE INDEX-sætningen som vist i følgende:





OPRET UNIKT INDEKS indeksnavn PÅ tabelnavn ( kolonner ) ;

De kolonner, der er inkluderet i indekset, accepterer ikke nogen duplikerede rækker.

Eksempel på unik tabelillustration

For at demonstrere, hvordan du opretter og bruger et unikt indeks, skal du tage følgende tabel:



VÆLG * FROM sample_data;

Produktion :

Opret et unikt indeks på kolonnen Fornavn

Følgende eksempelsætning viser, hvordan man opretter et unikt indeks ved hjælp af kolonnen fornavn:

opret unikt indeks fornavn_unik på sample_data ( fornavn ) ;

Ved at aktivere dette indeks kan vi ikke indsætte mere end én række med det samme fornavn.

Tag for eksempel følgende indsæt-sætning:

indsæt i sample_data ( id , fornavn, ip_adresse, btc_adresse, kreditkort, identifikator )
værdier ( elleve , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Hvis vi kører den givne insert-sætning, skulle vi få en fejl som vist i følgende:

[ 23000 ] [ 1 ] ORA-00001: unik begrænsning ( HR.FIRST_NAME_UNIQUE ) krænket

Som vi kan se, overtræder indsættelse af den givne værdi den unikke begrænsning for kolonnen fornavn.

Opret et unikt indeks med to kolonner

Vi kan også have et unikt indeks, som består af mere end én kolonne. I det følgende eksempel opretter vi et unikt indeks ved hjælp af kolonnerne fornavn og io_adresse:

oprette unikke indeks verify_kolonner på sample_data ( fornavn, ip_adresse ) ;

Tilsvarende vil tilføjelse af duplikerede værdier for enten kolonnen fornavn eller ip_adresse resultere i unikke indeksovertrædelsesfejl.

Automatiske unikke indekser

Har du nogensinde spekuleret på, hvad der sker, når du erklærer en tabelkolonne med en primær nøgle eller en unik begrænsning?

Enkelt sagt, hvis du angiver en kolonne som tabellens primære nøgle eller tildeler en unik begrænsning til en given kolonne, opretter databasemotoren automatisk et unikt indeks for den kolonne.

Dette sikrer, at der ikke indsættes en dubletværdi i den kolonne.

Tag for eksempel følgende udsagn:

oprette tabel sample_data
(
id nummer,
fornavn  varchar2 ( halvtreds ) ,
ip_adresse  varchar2 ( tyve ) ,
btc_adresse varchar2 ( halvtreds ) ,
kreditkort varchar2 ( halvtreds ) ,
identifikator  varchar2 ( 40 ) ,
begrænsning sample_pk primær nøgle ( id )
) ;

I det forrige eksempel opretter vi en tabel og indstiller id-kolonnen som tabellens primære nøgle. Derefter, for at se den unikke begrænsning, der er knyttet til den kolonne (automatisk genereret), kan vi køre følgende kommando:

Vælg index_name, index_type, synlighed, status, TABLE_NAME
fra alle_indekser, hvor TABLE_NAME = 'SAMPLE_DATA' ;

Resultater :
I dette tilfælde kan vi se det unikke indeks, som er oprettet af databasemotoren for id-kolonnen.

Konklusion

I denne vejledning lærte du, hvordan du opretter og bruger de unikke indekser i Oracle-databasen. Du lærte også, hvad der sker, når du tildeler en primær nøgle eller en unik begrænsning til en tabelkolonne.