Index Support für Fremdschlüssel


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:

1 - Constraints

Durch diesen Index lassen sich Abfragen wie die folgende optimieren:

SQL Query Result

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:

explain plan

Was passiert, wenn wir den Index löschen?

drop index

Der Eintrag in der Index Support Spalte ist jetzt leer:

index support

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.

cpu cost

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.create index FK Columns

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

add unique or primary

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.