Die HashTableScan-Methode durchsucht die Build-Seite eines Hash-Joins, als wäre sie eine speicherresidente Tabelle, dabei
wird ein Plan mit darunter liegender Erst-Struktur in einen mit darunter liegender Zweit-Struktur konvertiert, wobei idx
ein Index ist, der zur Prüfung der in der Hash-Tabelle gespeicherten Join-Schlüsselwerte verwendet werden kann:
table1<seq>*JH ( <operator>... ( table2<seq> ) )
table1<seq>*JF ( <operator>... ( HTS JNB table2<idx> ) )
Wenn es Operatoren zwischen dem Hash-Join und dem Scan gibt, vermindert ein Hash Table-Scan die Anzahl der benötigten Zeilen, die von anderen Operatoren verarbeitet werden müssen. Diese Strategie ist besonders nützlich, wenn die Index-Durchsuchungen hoch selektiv sind, wie wenn z.B. die Anzahl der Zeilen in der Build-Seite gering ist verglichen mit der Kardinalität des Indexes.
Wenn die Build-Seite des Hash-Joins umfangreich ist, ist es effizienter, einen regulären Scan durchzuführen.
Der Optimierer berechnet eine Schwellenwert-Build-Größe, und zwar auf ähnliche Weise wie er den Schwellenwert für die alternative
Ausführung des Hash-Joins berechnet. Wenn die Zeilenanzahl auf der Build-Seite diesen Schwellenwert überschreitet, wird der
HashTableScan abgebrochen und (HTS JNB Tabelle<idx>)
wird während der Ausführung als ein sequenzieller Scan (Tabelle<seq>)
behandelt.
Die sequenzielle Strategie wird verwendet, wenn die Build-Seite der Hash-Tabelle auf die Festplatte ausgegeben werden muss.
![]() |
Kommentieren Sie diese Seite in DocCommentXchange.
|
Copyright © 2010, iAnywhere Solutions, Inc. - SQL Anywhere 12.0.0 |