Oracle-Indexunterstützung für Fremdschlüssel für Bessere Performance

Veröffentlicht 08. Juni 2016

Aktualisiert Oktober 2025


Einführung

Die Unterstützung von Fremdschlüssel-Indizes in Oracle bedeutet, sicherzustellen, dass jede Fremdschlüsselspalte über einen passenden Index verfügt.
Obwohl dies nicht zwingend erforderlich ist, führt ein solcher Index zu deutlich besserer Leistung.
Glücklicherweise macht Hora es besonders einfach, fehlende Indizes zu erkennen und sie mit nur wenigen Klicks anzulegen.

In diesem Beispiel haben wir das HR-Schema in HR1 geklont, um das Verhalten zu demonstrieren.
Es existiert eine Fremdschlüssel-Constraint, die sicherstellt, dass jede job_id in der Tabelle EMPLOYEES einer Primärschlüsselspalte in der Tabelle JOBS entspricht.
Diese Beziehung wird durch den Index EMP_JOB_IX unterstützt:

Liste der Tabellen-Constraints mit Spalten, die die Indexunterstützung für die Constraints anzeigen

Liste der Tabellen-Constraints mit Spalten, die die Indexunterstützung für die Constraints anzeigen

Der Index optimiert Abfragen wie die folgende:

Beispiel-SQL-Abfrage, die einen Index verwendet

Beispiel-SQL-Abfrage, die einen Index verwendet

 

Wie im Explain Plan zu sehen ist, wird der Index verwendet, um die SA_REP-Zeilen effizient zu filtern:

Explain-Plan-Dialog mit Anzeige der Indexunterstützung

Explain-Plan-Dialog mit Anzeige der Indexunterstützung

 


Was passiert ohne den Index?

Als Nächstes sehen wir uns an, was passiert, wenn wir diesen Index löschen und die Abfrage erneut ausführen.

Kontextmenü zum Löschen eines Indexes

Kontextmenü zum Löschen eines Indexes

Nachdem der Index entfernt wurde, zeigt die Constraint in Horas Constraints-Registerkarte keinen Eintrag mehr unter „Index support“:

Constraint-Liste zeigt nach dem Löschen des Indexes keine Indexunterstützung mehr an

Constraint-Liste zeigt nach dem Löschen des Indexes keine Indexunterstützung mehr an

 

Wenn wir die Abfrage danach erneut ausführen, zeigt der Explain Plan eine deutlich höhere CPU-Last – ein klarer Hinweis darauf, wie stark das Fehlen eines Indexes die Performance beeinträchtigt.

 

Explain-Plan-Dialog zeigt erhöhte CPU-Auslastung nach dem Löschen des Indexes

Explain-Plan-Dialog zeigt erhöhte CPU-Auslastung nach dem Löschen des Indexes

 


Warum Fremdschlüssel-Indizes wichtig sind

Ein weiterer Grund, Fremdschlüssel-Spalten zu indizieren, besteht darin, vollständige Tabellensperren auf der Kindtabelle zu verhindern, wenn Primärschlüssel in der Elterntabelle geändert oder gelöscht werden.
Ohne Index muss Oracle beim Löschen oder Aktualisieren des Primärschlüssels die gesamte Kindtabelle sperren, um sicherzustellen, dass keine abhängigen Datensätze mehr existieren.
Dies kann gleichzeitige Änderungen blockieren und die Verarbeitung erheblich verlangsamen.

Eine ausführliche konzeptionelle Beschreibung dieses Sachverhalts – am Beispiel der Tabellen HR.DEPARTMENTS und HR.EMPLOYEES – finden Sie im Oracle Concepts Manual.


Wie Hora das Problem löst

Wenn eine Fremdschlüssel-Constraint nicht durch einen Index unterstützt wird, können Sie das Problem in Hora ganz einfach beheben.
Öffnen Sie die Constraints-Registerkarte, klicken Sie mit der rechten Maustaste auf die Constraint und wählen Sie „Create index on FK columns“ aus dem Kontextmenü:

Kontextmenüeintrag „Create index on FK columns“ (Index für FK-Spalten erstellen)

Kontextmenüeintrag „Create index on FK columns“ (Index für FK-Spalten erstellen)

 

Der Dialog wird automatisch mit den entsprechenden Details zur ausgewählten Constraint ausgefüllt, was Zeit spart und Fehler vermeidet:

 

Modaldialog zum Erstellen eines Indexes

Modaldialog zum Erstellen eines Indexes

 

Sie können den vorgeschlagenen Indexnamen, zum Beispiel EMP_JOB_FK_IDX, nach Wunsch anpassen oder den ursprünglichen Namen, z. B. EMP_JOB_IX, verwenden.
Auf diese Weise sorgt Hora für eine schnelle und einfache Korrektur – ohne SQL-Skripte manuell schreiben zu müssen.

Wir hoffen, Sie stimmen uns zu: Die Indexunterstützung für Fremdschlüssel ist eine kleine Maßnahme mit großem Effekt – und Hora macht deren Umsetzung besonders einfach.


➡️ KeepTool kostenlos testen

Die Oracle-Tools von KeepTool wurden speziell für Entwickler, DBAs und Support-Teams entwickelt.
Basierend auf über 25 Jahren Erfahrung optimieren wir unsere Software kontinuierlich, um Ihre Datenbankanalyse und -dokumentation schneller, effizienter und übersichtlicher zu gestalten.