Was cascade delete
tut, gibt einzelne delete-Anweisungen aus.
Untersuchen Sie den folgenden Testfall:
%Vor%In der Trace-Datei finden Sie eine Zeile wie folgt:
%Vor% Das ist Oracle, das eine Löschanweisung für CHILD
für jeden Datensatz ausgibt, den es in PARENT
löscht.
Eine andere Frage wäre, welche der beiden effizienter sind:
%Vor%vs
%Vor% beide mit on delete cascade
aktiviert. Überraschenderweise wird Oracle im ersten Fall den Fremdschlüsselindex für die untergeordnete Tabelle untersuchen, um festzustellen, ob Zeilen vorhanden sind, die eine Kaskade erfordern. Wenn keine Zeilen vorhanden sind, führt Oracle das kaskadierte Löschen nicht aus.
Sie können beide Optionen nicht vergleichen. Es ist kein Leistungsproblem, sondern mehr Design und Struktur.
Wenn Sie Ihre Datenbank mit primären / fremden Schlüsseln entwerfen, ist es einfacher, mit cascading-deltes zu löschen, als manuell zu suchen, wo Sie Fremdschlüssel in welcher Spalte und Tabelle haben und maching SQL-Anweisungen erzeugen.
Der Hauptvorteil der Cascading-Deletes-Funktion besteht darin, dass Sie die Anzahl der SQL-Anweisungen reduzieren können, die Sie zum Ausführen von Löschaktionen benötigen