In Oracle -Datenbanken bezieht sich ein Index auf eine Datenstruktur, die die Geschwindigkeit der Datenabrufvorgänge in einer Datenbanktabelle vorantreibt. Dies kann jedoch eine Strafe für zusätzliche Schreibvorgänge und Speicherplatz in Ihrer Datenbank erfolgen.
In diesem Tutorial erfahren Sie, wie Sie einen vorhandenen Index aus einer Datenbanktabelle unter Verwendung des DROP -Indexbefehls fallen lassen.
Oracle Drop Indexbefehl
Das Folgende zeigt die Syntax des DROP -Indexbefehls in Oracle -Datenbanken:
Drop Index index_name;
Ersetzen Sie den Index_namen durch den Namen des Index, den Sie fallen möchten.
Wenn der Index, den Sie fallen lassen möchten, in einem anderen Schema befindet. Zum Beispiel:
Drop Index Schema_Name.INDEX_NAME;
In diesem Fall müssen Sie Schema_Name durch den Namen des Schemas ersetzen, in dem sich der Index befindet.
Oracle -Beispielindex erstellen
Die folgende Beispielanweisung erstellt einen Beispielindex in der Tabelle der Mitarbeiter zu Illustrationszwecken.
erstellen index multi_lookup auf Mitarbeitern (First_Name, last_name);
In diesem Abschnitt werden die Details zum Erstellen von Indizes in Oracle -Datenbanken nicht behandelt. Überprüfen Sie unser Tutorial im Befehl Oracle Create Index, um mehr zu erfahren.
Sobald der Index erstellt wurde, können wir ihn wie im folgenden Abschnitt gezeigt entfernen:
Oracle Drop Index
Verwenden Sie die Drop -Index -Anweisung, gefolgt vom Indexnamen, um den obigen Index zu fallen, wie gezeigt:
Drop Index multi_lookup;
In der obigen Abfrage wird der Index namens Multi_lookup aus dem aktuellen Schema entfernt.
Oracle Drop Index - bedingt
In Oracle führt der Versuch, einen nicht existierenden Index zu entfernen. Nehmen Sie die Beispielabfrage unten:
Drop Index multi_lookup;
Da der Multi_Lookup -Index nicht vorhanden ist, gibt die Abfrage einen Fehler zurück:
[72000] [1418] ORA-01418: Der angegebene Index gibt es nicht
In einigen Datenbankmotoren könnten wir dies überwinden, indem wir die Klausel von If nicht existieren, die verhindert, dass die Anweisung eine Ausnahme zurückgibt, wenn der Fehler nicht vorhanden ist.
Leider haben einige ältere Versionen von Oracle den Befehl if exists nicht. Wir können jedoch eine benutzerdefinierte Logik implementieren, um Ausnahmen zu verhindern, wenn der Index nicht vorhanden ist, wie gezeigt:
Declare Index_num Integer;
START
Wählen Sie Count (*) in Index_num aus
Von user_indexes
Wobei Index_name = 'index_name';
Wenn Index_Count> 0 dann
Sofortige "Drop Index index_name" ausführen;
Ende wenn;
ENDE;
Dieser Code verwendet einen PL/SQL -Block, um einen Index fallen zu lassen, wenn er vorhanden ist. Wir beginnen damit, eine Variable namens Index_num zu deklarieren, um die Anzahl der Indizes mit dem angegebenen Namen zu speichern.
Als nächstes verwenden wir eine SELECT -Anweisung, um die Anzahl der Indizes mit dem angegebenen Namen in der Tabelle user_indexes zu zählen und das Ergebnis in der Index_num -Variable zu speichern.
Wir verwenden dann einen If -Block, um zu überprüfen, ob der Wert der Index_num -Variablen größer als 0 ist. Wenn wahr, entfernen wir alle Indizes mit dem angegebenen Namen. Andernfalls rufen wir die Anweisung entfernen in der Entfernung an, die Ausnahmen verhindert.
Abschluss
Zusammenfassend lässt sich sagen. Die Syntax für diese Aussage lautet:
Drop Index index_name;
Um einen Index in einem anderen Schema fallen zu lassen, können Sie die folgende Syntax verwenden:
Drop Index Schema_Name.INDEX_NAME;
Sie können die IF -Klausel in der Drop -Index -Anweisung verwenden, um zu verhindern. Zum Beispiel:
Drop -Index, wenn exists Index_name;
Alternativ können Sie, wie in den vorherigen Beispielen gezeigt, einen PL/SQL -Block verwenden, um zu überprüfen, ob der Index vorhanden ist, bevor Sie versuchen, ihn abzugeben.