Freigeben über


Grundlegendes zu Nested Loops-Verknüpfungen

Die Nested Loops-Verknüpfung, auch geschachtelte Iteration genannt, verwendet eine Verknüpfungseingabe als äußere Eingabetabelle (im grafischen Ausführungsplan als obere Eingabe dargestellt) und eine zweite Verknüpfungseingabe als innere (untere) Eingabetabelle. Die äußere Schleife verarbeitet die äußere Eingabetabelle zeilenweise. Die innere Schleife wird für jede äußere Zeile ausgeführt und sucht übereinstimmende Zeilen in der inneren Eingabetabelle.

Im einfachsten Fall wird beim Suchvorgang eine Tabelle oder ein Index vollständig gescannt; dieser Vorgang wird als naive Nested Loops-Verknüpfung bezeichnet. Wenn die Suche einen Index verwendet, wird dies eine indizierte Nested Loops-Verknüpfung genannt. Wird der Index als Teil des Abfrageplans erstellt (und nach Beendigung der Abfrage gelöscht), wird dies eine temporäre indizierte Nested Loops-Verknüpfung genannt. Alle beschriebenen Varianten werden vom Abfrageoptimierer berücksichtigt.

Eine Nested Loops-Verknüpfung ist besonders wirksam, wenn die äußere Eingabe klein und die innere Eingabe vorindiziert und umfangreich ist. In vielen kleinen Transaktionen, die beispielsweise nur wenige Zeilen betreffen, sind indizierte Nested Loops-Verknüpfungen sowohl Zusammenführungsverknüpfungen als auch Hashverknüpfungen überlegen. In umfangreichen Abfragen dagegen sind Nested Loops-Verknüpfungen häufig nicht die optimale Wahl.