Hash Match (Showplanoperator)

Der Hash Match-Operator erzeugt eine Hashtabelle, indem er für jede Zeile der Erstellungseingabe einen Hashwert berechnet. Ein HASH:()-Prädikat mit einer Liste der Spalten, die zum Erstellen der Hashwerte verwendet werden, wird in der Argument-Spalte angezeigt. Anschließend wird, soweit möglich, für jede Einfügezeile ein Hashwert (mithilfe derselben Hashfunktion) berechnet und in der Hashtabelle nach Übereinstimmungen gesucht. Wenn ein RESIDUAL-Prädikat vorhanden ist (identifiziert durch RESIDUAL:() in der Argument-Spalte), müssen Zeilen auch dieses Prädikat erfüllen, um als übereinstimmend zu gelten. Das Verhalten des Operators hängt von dem auszuführenden logischen Vorgang ab:

  • Für jede Verknüpfung wird die erste (obere) Eingabe verwendet, um die Hashtabelle zu erstellen, und die zweite (untere) Eingabe zum Einfügen in die Hashtabelle. Die Ausgabeübereinstimmungen (oder Nichtübereinstimmungen) werden vom Verknüpfungstyp bestimmt. Wenn mehrere Verknüpfungen dieselbe Verknüpfungsspalte verwenden, werden diese Vorgänge in einem Hashteam gruppiert.

  • Für die Operatoren Distinct oder Aggregate wird die Eingabe verwendet, um die Hashtabelle zu erstellen (wobei Duplikate entfernt und Aggregatausdrücke berechnet werden). Wenn die Hashtabelle erstellt ist, wird die Tabelle gescannt, und alle Einträge werden ausgegeben.

  • Für den Union-Operator wird die erste Eingabe verwendet, um die Hashtabelle zu erstellen (wobei Duplikate entfernt werden). Die zweite Eingabe (die keine Duplikate haben darf) wird zum Einfügen in die Hashtabelle verwendet, wobei alle nicht übereinstimmenden Zeilen zurückgegeben werden, anschließend wird die Hashtabelle gescannt, und alle Einträge werden zurückgegeben.

Hash Match ist ein physischer Operator.

Hash Match-Operator (Symbol)Symbol im grafischen Ausführungsplan