Nei database Oracle, un indice si riferisce a una struttura di dati che fa avanzare la velocità delle operazioni di recupero dei dati su una tabella del database. Tuttavia, ciò può essere fornito con una penalità di operazioni di scrittura extra e spazio di archiviazione nel tuo database.
In questo tutorial, imparerai come rilasciare un indice esistente da una tabella di database utilizzando il comando Drop Index.
Comando Oracle Drop Index
Quanto segue dimostra la sintassi del comando Drop Index nei database Oracle:
Drop index_name;
Sostituisci indice_name con il nome dell'indice che si desidera eliminare.
Se l'indice che si desidera eliminare è in uno schema diverso, dovrai specificare il nome dello schema nell'istruzione Drop Index. Per esempio:
Drop Index Schema_Name.index_name;
In questo caso, è necessario sostituire Schema_Name con il nome dello schema in cui risiede l'indice.
Oracle crea un indice di esempio
L'istruzione di esempio seguente crea un indice di esempio nella tabella dei dipendenti per scopi di illustrazione.
Crea indice multi_lookup sui dipendenti (first_name, last_name);
Questa sezione non copre i dettagli della creazione di indici nei database Oracle. Controlla il nostro tutorial sul comando Oracle Crea Index per saperne di più.
Una volta creato l'indice, possiamo rimuoverlo come mostrato nella sezione seguente:
Oracle Drop Index
Utilizzare l'istruzione Drop Index seguita dal nome dell'indice per rilasciare l'indice sopra, come mostrato:
drop indice multi_lookup;
La query sopra rimuoverà l'indice chiamato multi_lookup dallo schema corrente.
Oracle Drop Index - Condizionale
In Oracle, il tentativo di rimuovere un indice inesistente comporterà un errore. Prendi la query di esempio di seguito:
drop indice multi_lookup;
Poiché non esiste l'indice multi_lookup, la query restituirà un errore:
[72000] [1418] ORA-01418: l'indice specificato non esiste
In alcuni motori di database, potremmo superare questo aggiungendo la clausola se non esiste, il che impedisce all'istruzione di restituire un'eccezione se l'errore non esiste.
Sfortunatamente, alcune versioni precedenti di Oracle non hanno il comando IF esiste. Possiamo, tuttavia, implementare la logica personalizzata per prevenire le eccezioni se l'indice non esiste, come mostrato:
Dichiarare indice_num integer;
INIZIO
Seleziona COUNT (*) in Index_Num
Da user_indexes
Dove index_name = 'index_name';
If index_count> 0 allora
Esegui "Drop index_name" immediato;
FINISCI SE;
FINE;
Questo codice utilizza un blocco PL/SQL per rilasciare un indice se esiste. Iniziamo dichiarando una variabile chiamata index_num per archiviare il numero di indici con il nome dato.
Successivamente, utilizziamo un'istruzione SELECT per contare il numero di indici con il nome dato nella tabella user_indexes e archivia il risultato nella variabile Index_Num.
Usiamo quindi un blocco if per verificare se il valore della variabile INDICE_NUM è maggiore di 0. Se vero, rimuoviamo tutti gli indici con il nome specificato. Altrimenti, non riusciamo a chiamare l'istruzione Rimuovi l'indice che impedisce eventuali eccezioni.
Conclusione
In conclusione, l'istruzione indice Drop rimuove un indice da una tabella di database in Oracle. La sintassi per questa affermazione è:
Drop index_name;
Per eliminare un indice in uno schema diverso, è possibile utilizzare la seguente sintassi:
Drop Index Schema_Name.index_name;
È possibile utilizzare la clausola IF esistente nell'istruzione indice di caduta per evitare che venga lanciata un'eccezione se l'indice non esiste. Per esempio:
Drop Index Se esiste Index_Name;
In alternativa, come mostrato negli esempi precedenti, è possibile utilizzare un blocco PL/SQL per verificare se l'indice esiste prima di tentare di abbandonarlo.