Deși există numeroase modalități de îmbunătățire a performanței bazei de date, o caracteristică este aproape universală pentru orice bază de date. Indicii de baze de date sunt structuri de date sau obiecte care sunt utilizate pentru a spori viteza de extragere a datelor din tabel.
Când sunt utilizate corect, indecșii bazei de date pot reduce viteza unei interogări cu aproape jumătate, în funcție de datele țintă, aspectul, resursele disponibile etc.
În acest tutorial, veți învăța cum să lucrați cu indecși unici în bazele de date Oracle pentru a preveni disponibilitatea valorilor duplicate într-o coloană indexată.
Oracle Unique Index
Putem folosi un index unic pentru a ne asigura că nu sunt stocate rânduri duplicate într-o coloană dată. Dacă coloana unui index dat conține o regulă unică, încercarea de a adăuga două rânduri cu o valoare similară în acea coloană va duce la o eroare care indică o încălcare a constrângerii unice.
În Oracle, putem crea un index unic folosind instrucțiunea CREATE UNIQUE INDEX, așa cum se arată în următoarele:
CREATE UNIQUE INDEX index_name ON table_name ( coloane ) ;
Coloanele care sunt incluse în index nu vor accepta rânduri duplicat.
Exemplu de ilustrație unică de masă
Pentru a demonstra cum să creați și să utilizați un index unic, luați următorul tabel:
SELECTAȚI * FROM mostre_date;
Ieșire :
Creați un index unic pe coloana First_Name
Următorul exemplu de instrucțiune arată cum să creați un index unic folosind coloana first_name:
creați un index unic first_name_unique pe sample_data ( Nume ) ;Prin activarea acestui index, nu putem insera mai mult de un rând cu același prenume.
Luați, de exemplu, următoarea declarație de inserare:
inserați în sample_data ( id , prenume, adresa_ip, adresa_btc, card_credit, identificator )valorile ( unsprezece , „Wallas” , „169.158.70.77” , „1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q” , „4017955174552” ,
„26811d77-0a3a-4397-bc33-f7835f7c7ab9” ) ;
Dacă rulăm instrucțiunea de inserare dată, ar trebui să obținem o eroare așa cum se arată în următorul:
[ 23000 ] [ 1 ] ORA-00001: constrângere unică ( HR.FIRST_NAME_UNIQUE ) încălcatDupă cum putem vedea, inserarea valorii date încalcă constrângerea unică pentru coloana first_name.
Creați un index unic cu două coloane
De asemenea, putem avea un index unic care este compus din mai multe coloane. În exemplul următor, creăm un index unic folosind coloanele first_name și io_address:
creați index unic verify_columns pe sample_data ( prenume, adresa_ip ) ;În mod similar, adăugarea de valori duplicate pentru coloana first_name sau ip_address va duce la erori unice de încălcare a indexului.
Indici unici automati
V-ați întrebat vreodată ce se întâmplă când declarați o coloană de tabel cu o cheie primară sau o constrângere unică?
În termeni simpli, dacă setați o coloană ca cheie primară a tabelului sau atribuiți o constrângere unică unei anumite coloane, motorul bazei de date creează automat un index unic pentru acea coloană.
Acest lucru asigură că nu este inserată nicio valoare duplicată în acea coloană.
Luați de exemplu următoarea afirmație:
creați tabelul sample_data(
id număr,
prenume varchar2 ( cincizeci ) ,
adresa_ip varchar2 ( douăzeci ) ,
adresa_btc varchar2 ( cincizeci ) ,
card_credit varchar2 ( cincizeci ) ,
identificator varchar2 ( 40 ) ,
cheie primară constrângere sample_pk ( id )
) ;
În exemplul anterior, creăm un tabel și setăm coloana id ca cheie primară a tabelului. Apoi, pentru a vizualiza constrângerea unică asociată cu acea coloană (generată automat), putem rula următoarea comandă:
Selectați nume_index, tip_index, vizibilitate, stare, TABLE_NAMEdin all_indexes unde TABLE_NAME = „SAMPLE_DATA” ;
Rezultate :
În acest caz, putem vedea indexul unic care este creat de motorul bazei de date pentru coloana id.
Concluzie
În acest ghid, ați învățat cum să creați și să utilizați indecșii unici din baza de date Oracle. De asemenea, ați învățat ce se întâmplă atunci când atribuiți o cheie primară sau o constrângere unică unei coloane de tabel.