oracle

Index Support für Fremdschlüssel

08 Jun 2016

Hat Ihre Tabelle eine Fremdschlüssel Beziehung zu einer übergeordneten Tabelle? In diesem Fall ist es nicht zwingend erforderlich aber fast immer eine gute Idee, einen Index auf dem Fremdschlüssel zu definieren, um dadurch die Performance zu verbessern. Sollte dieser Index fehlen, so ist es kinderleicht, ihn mit KeepTool Hora anzulegen.

In dem folgenden Beispiel haben wir eine Kopie des HR Schemas im Schema HR1 erzeugt, um Ihnen zu zeigen, wie es funktioniert. Es gibt eine Fremdschlüssel-Beziehung in der Tabelle EMPLOYEES. Der Wert von job_id in EMPLOYEES muss mit dem Primärschlüssel in der JOBS Tabelle übereinstimmen. Der Index Support dieser Spalte ist EMP_JOB_IX:

Durch diesen Index lassen sich Abfragen wie die folgende optimieren:

In der Explain Plan Ansicht – Sie finden diese in Hora auf der SQL Seite – sehen Sie, dass der Index verwendet wird, um die SA_REP Zeilen zu erhalten:

Was passiert, wenn wir den Index löschen?

Der Eintrag in der Index Support Spalte ist jetzt leer:

Wenn wir die Abfrage erneut ausführen, zeigt uns die Explain Plan Ansicht in der Spalte CPU cost, dass es eine dramatische Veränderung gegeben hat.

Wenn wir die Abfrage erneut ausführen, zeigt uns die Explain Plan Ansicht in der Spalte CPU cost, dass es eine dramatische Veränderung gegeben hat.

Es gibt noch einen weiteren Grund, auf Fremdschlüssel-Spalten einen Index Support zu definieren. Ohne Index Support ist die gesamte Kind-Tabelle gesperrt, wenn der Primär Schlüssel der Eltern-Tabelle geändert wird. Eine detaillierte Erklärung am Beispiel der Tabellen HR.DEPARTMENTS und HR.EMPLOYEES finden Sie im Oracle Concepts Handbuch.

Sollten Sie in Ihrer Datenbank eine Fremdschlüssel Beziehung ohne Index Support finden, so können Sie mit einem Klick über den „Create index on FK columns“ Dialog den Index erzeugen. Diesen Dialog können Sie über das Kontext Menu im Constraints Tab Register aufrufen.

Der Dialog zeigt alle relevanten Informationen für die markierte Zeile

Wenn Sie den ursprünglichen Zustand des Oracle Schemas wieder herstellen wollen, ersetzen Sie den vorgeschlagenen Index Namen EMP_JOB_FK_IDX durch EMP_JOB_IXs.

Zurück zur Übersicht