Sebbene esistano numerosi modi per migliorare le prestazioni del database, una funzione è quasi universale per qualsiasi database. Gli indici del database sono strutture di dati o oggetti utilizzati per migliorare la velocità del recupero dei dati dalla tabella.
Se utilizzati correttamente, gli indici del database possono ridurre la velocità di una query di quasi la metà, a seconda dei dati di destinazione, del layout, delle risorse disponibili, ecc.
In questo tutorial, imparerai a lavorare con indici univoci nei database Oracle per impedire la disponibilità di valori duplicati in una colonna indicizzata.
Oracle UNIVE INDICE
Possiamo utilizzare un indice univoco per garantire che nessuna riga duplicata sia memorizzata in una determinata colonna. Se la colonna di un determinato indice contiene una regola univoca, il tentativo di aggiungere due righe con un valore simile in quella colonna si tradurrà in un errore che indica una violazione di vincoli univoca.
In Oracle, possiamo creare un indice univoco utilizzando l'istruzione Index Crea unica come mostrato nella seguente:
Crea indice indice_name univoco su table_name (colonne);
Le colonne incluse nell'indice non accetteranno alcuna riga duplicata.
Esempio di illustrazione unica della tabella
Per dimostrare come creare e utilizzare un indice univoco, prendi la tabella seguente:
Seleziona * da Sample_data;
Produzione:
Crea un indice univoco sulla colonna First_name
L'istruzione di esempio seguente mostra come creare un indice univoco utilizzando la colonna First_name:
Crea indice univoco first_name_unique su sample_data (first_name);
Abilitando questo indice, non possiamo inserire più di una riga con lo stesso nome.
Prendi ad esempio la seguente istruzione Insert:
Inserisci in sample_data (id, first_name, ip_address, btc_address, crediti_card, identifier)
Valori (11, "Wallas", 169.158.70.77 ',' 1cnz5d1d5sc8sar6dfsvihwztqyx5fg77q ',' 4017955174552 ',
'26811d77-0a3a-4397-bc33-f7835f7c7ab9');
Se eseguiamo l'istruzione Insert data, dovremmo ottenere un errore come mostrato da segue:
[23000] [1] ORA-00001: vincolo unico (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. Nel seguente esempio, creiamo un indice univoco utilizzando le colonne First_Name e IO_Address:
Crea indice univoco Verify_Columns su Sample_Data (First_name, IP_ADDRES);
Allo stesso modo, l'aggiunta di valori duplicati per la colonna First_Name o IP_ADDRESS comporterà errori di violazione dell'indice univoci.
Indici univoci automatici
Ti sei mai chiesto cosa succede quando dichiari una colonna di tabella con una chiave primaria o un vincolo univoco?
In termini semplici, se si imposta una colonna come chiave primaria della tabella o si assegna un vincolo univoco a una data colonna, il motore del database crea automaticamente un indice univoco per quella colonna.
Ciò garantisce che non venga inserito alcun valore duplicato in quella colonna.
Prendi ad esempio la seguente affermazione:
Crea table sample_data
(
Numero ID,
first_name varchar2 (50),
ip_address varchar2 (20),
btc_address varchar2 (50),
Credit_Card Varchar2 (50),
Identificatore varchar2 (40),
Chiave primaria del vincolo Sample_PK (ID)
);
Nell'esempio precedente, creiamo una tabella e impostiamo la colonna ID come chiave principale della tabella. Quindi, per visualizzare il vincolo univoco associato a quella colonna (generata automaticamente), possiamo eseguire il seguente comando:
Seleziona index_name, index_type, visibilità, stato, table_name
da all_indexes dove table_name = 'sample_data';
Risultati:
In questo caso, possiamo vedere l'indice univoco creato dal motore del 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 si assegna una chiave primaria o un vincolo univoco a una colonna della tabella.