Oracle Unique Index

Oracle Unique Index
Databaseytelse er en av de essensielle rollene til en databaseutvikler. Å sikre at databasen din kjører med optimal ytelse, kan påvirke applikasjonene som leser eller skriver til den databasen betydelig.

Selv om det eksisterer mange måter å forbedre databaseytelsen på, er en funksjon nesten universell for enhver database. Databaseindekser er datastrukturer eller objekter som brukes til å forbedre hastigheten på datainnhenting fra tabellen.

Når det brukes riktig, kan databaseindekser redusere hastigheten på en spørring med nesten halvparten, avhengig av måldata, layout, tilgjengelige ressurser osv.

I denne opplæringen skal du lære å jobbe med unike indekser i Oracle -databaser for å forhindre tilgjengeligheten av duplikatverdier i en indeksert kolonne.

Oracle Unique Index

Vi kan bruke en unik indeks for å sikre at ingen dupliserte rader blir lagret i en gitt kolonne. Hvis kolonnen i en gitt indeks inneholder en unik regel, vil det å legge til to rader med en lignende verdi i den kolonnen resultere i en feil som indikerer et unikt brudd på begrensningen.

I Oracle kan vi opprette en unik indeks ved å bruke Create Unique Index -setningen som vist i følgende:

Lag unik indeksindeks_navn på tabellnavn (kolonner);

Kolonnene som er inkludert i indeksen vil ikke godta noen dupliserte rader.

Eksempel på unik tabellillustrasjon

For å demonstrere hvordan du oppretter og bruker en unik indeks, ta følgende tabell:

Velg * fra Sample_Data;

Produksjon:

Lag en unik indeks på førstneavn -kolonnen

Følgende eksempler på setningen viser hvordan du oppretter en unik indeks ved hjelp av First_Name -kolonnen:

Lag unik indeks first_name_unique på eksempler_data (første_navn);

Ved å aktivere denne indeksen, kan vi ikke sette inn mer enn en rad med samme fornavn.

Ta for eksempel følgende innsatserklæring:

Sett inn i Sample_Data (ID, First_name, IP_Address, BTC_Address, Credit_card, Identifier)
Verdier (11, 'Wallas', '169.158.70.77 ',' 1CNZ5D1D5SC8SAR6DFSVIHWZTQYX5FG77Q ',' 4017955174552 ',
'26811d77-0A3A-4397-BC33-F7835F7C7AB9');

Hvis vi kjører den gitte innsatsen, bør vi få en feil som vist i følgende:

[23000] [1] ORA-00001: Unik begrensning (HR.First_name_unique) krenket

Som vi kan se, bryter det å sette inn den gitte verdien den unike begrensningen for første_navn -kolonnen.

Lag en unik indeks med to kolonner

Vi kan også ha en unik indeks som består av mer enn en kolonne. I det følgende eksemplet oppretter vi en unik indeks ved hjelp av First_Name og IO_Address Columns:

Lag unik indeks Verify_columns på Sample_Data (First_name, IP_Address);

Tilsvarende vil du legge til dupliserte verdier for enten den første_navnet eller IP_Address -kolonnen vil resultere i unike indeksovertredelsesfeil.

Automatiske unike indekser

Har du noen gang lurt på hva som skjer når du erklærer en tabellkolonne med en primær nøkkel eller unik begrensning?

Enkelt sagt, hvis du angir en kolonne som tabellens primære nøkkel eller tildeler en unik begrensning til en gitt kolonne, oppretter databasemotoren automatisk en unik indeks for den kolonnen.

Dette sikrer at ingen duplikatverdi settes inn i den kolonnen.

Ta for eksempel følgende uttalelse:

Lag tabellprøve_data
(
ID-nummer,
First_name varchar2 (50),
IP_ADDRESS VARCHAR2 (20),
BTC_ADDRESS VARCHAR2 (50),
Credit_card varchar2 (50),
Identifikator varchar2 (40),
Begrensningsprøve_pk Primærnøkkel (ID)
);

I forrige eksempel oppretter vi en tabell og angir ID -kolonnen som tabellens primære nøkkel. For å se den unike begrensningen som er tilknyttet den kolonnen (automatisk generert), kan vi kjøre følgende kommando:

velg indeks_navn, indeks_type, synlighet, status, tabellnavn
fra all_indekser der tabell_name = 'sample_data';

Resultater:
I dette tilfellet kan vi se den unike indeksen som er opprettet av databasemotoren for ID -kolonnen.

Konklusjon

I denne guiden lærte du hvordan du oppretter og bruker de unike indeksene i Oracle -databasen. Du lærte også hva som skjer når du tildeler en primær nøkkel eller unik begrensning til en tabellkolonne.