Indice univoco Oracle

Indice Univoco Oracle



Le prestazioni del database sono uno dei ruoli essenziali di uno sviluppatore di database. Garantire che il database sia in esecuzione con prestazioni ottimali può avere un impatto significativo sulle applicazioni che leggono o scrivono in quel database.

Sebbene esistano numerosi modi per migliorare le prestazioni del database, una caratteristica è quasi universale per qualsiasi database. Gli indici di database sono strutture di dati o oggetti che vengono utilizzati per migliorare la velocità del recupero dei dati dalla tabella.

Se utilizzati correttamente, gli indici del database possono ridurre di quasi la metà la velocità di una query, a seconda dei dati di destinazione, del layout, delle risorse disponibili, ecc.







In questo tutorial imparerai come lavorare con indici univoci nei database Oracle per impedire la disponibilità di valori duplicati in una colonna indicizzata.



Indice univoco Oracle

Possiamo utilizzare un indice univoco per garantire che non vengano memorizzate righe duplicate in una determinata colonna. Se la colonna di un dato indice contiene una regola univoca, il tentativo di aggiungere due righe con un valore simile in quella colonna genererà un errore che indica una violazione del vincolo univoco.



In Oracle, possiamo creare un indice univoco utilizzando l'istruzione CREATE UNIQUE INDEX come mostrato di seguito:





CREATE UNIQUE INDEX nome_indice ON nome_tabella ( colonne ) ;

Le colonne incluse nell'indice non accetteranno righe duplicate.

Esempio di illustrazione tabella unica

Per dimostrare come creare e utilizzare un indice univoco, prendi la seguente tabella:



SELEZIONARE * DA dati_campione;

Produzione :

Crea un indice univoco nella colonna First_Name

La seguente istruzione di esempio mostra come creare un indice univoco utilizzando la colonna first_name:

crea un indice univoco first_name_unique su sample_data ( nome di battesimo ) ;

Abilitando questo indice non possiamo inserire più di una riga con lo stesso nome.

Prendiamo ad esempio la seguente dichiarazione di inserimento:

inserire in sample_data ( id , nome_nome, indirizzo_ip, indirizzo_btc, carta_di_credito, identificatore )
i valori ( undici , 'Wallas' , '169.158.70.77' , '1CNz5d1d5SC8SaR6dFSVihwztqYx5Fg77q' , '4017955174552' ,
'26811d77-0a3a-4397-bc33-f7835f7c7ab9' ) ;

Se eseguiamo l'istruzione insert fornita, dovremmo ottenere un errore come mostrato di seguito:

[ 23000 ] [ 1 ] ORA-00001: vincolo univoco ( HR.FIRST_NAME_UNIQUE ) violato

Come possiamo vedere, l'inserimento del valore dato viola il vincolo univoco per la colonna first_name.

Crea un indice univoco con due colonne

Possiamo anche avere un indice univoco composto da più di una colonna. Nell'esempio seguente, creiamo un indice univoco utilizzando le colonne first_name e io_address:

crea un indice univoco verify_columns su sample_data ( nome_nome, indirizzo_ip ) ;

Allo stesso modo, l'aggiunta di valori duplicati per la colonna first_name o ip_address comporterà errori di violazione dell'indice univoco.

Indici univoci automatici

Ti sei mai chiesto cosa succede quando dichiari una colonna della tabella con una chiave primaria o un vincolo univoco?

In termini semplici, se imposti una colonna come chiave primaria della tabella o assegni un vincolo univoco a una determinata colonna, il motore del database crea automaticamente un indice univoco per quella colonna.

Ciò garantisce che nessun valore duplicato venga inserito in quella colonna.

Prendiamo ad esempio la seguente affermazione:

crea la tabella sample_data
(
id numero,
nome_varchar2 ( cinquanta ) ,
indirizzo_ip  varchar2 ( venti ) ,
indirizzo_btc varchar2 ( cinquanta ) ,
credit_card varchar2 ( cinquanta ) ,
identificatore  varchar2 ( 40 ) ,
vincolo sample_pk chiave primaria ( id )
) ;

Nell'esempio precedente, creiamo una tabella e impostiamo la colonna id come chiave primaria della tabella. Quindi, per visualizzare il vincolo univoco associato a quella colonna (generato automaticamente), possiamo eseguire il seguente comando:

Selezionare index_name, index_type, visibilità, stato, TABLE_NAME
da all_indexes dove TABLE_NAME = 'DATI_CAMPIONE' ;

Risultati :
In questo caso, possiamo vedere l'indice univoco creato dal motore di database per la colonna id.

Conclusione

In questa guida hai imparato come creare e utilizzare gli indici univoci nel database Oracle. Hai anche imparato cosa succede quando assegni una chiave primaria o un vincolo univoco a una colonna della tabella.