Click here to view and discuss this page in DocCommentXchange. In the future, you will be sent there automatically.

SQL Anywhere 12.0.0 (Deutsch) » SQL Anywhere Server - SQL-Benutzerhandbuch » Abfragen optimieren und ausführen » Algorithmen zur Abfrageausführung » Typen von Algorithmen » Algorithmen für Abfrageausdrücke

 

Except-Algorithmen (EAH, EAM, EH, EM)

Der SQL Anywhere-Abfrageoptimierer kann aus zwei physischen Implementierungen des SQL-Operators für Mengendifferenzen EXCEPT wählen: eine Sortierungs-basierte Variante, MergeExcept (EM), und eine Hash-basierte Variante, HashExcept (EH).

MergeExcept verwendet MergeJoin, um die Mengendifferenz zwischen den beiden Eingaben durch Analyse von Zeilenübereinstimmungen in sortierter Reihenfolge zu berechnen. Häufig ist ein explizites Sortieren der beiden Eingaben erforderlich. HashExcept verwendet HashAntisemijoin auf ähnliche Weise, um die Mengendifferenz zwischen den beiden Eingaben zu berechnen, und einen Left-Outer-Hash-Join, um die Differenzmenge der beiden Eingaben (EXCEPT ALL) zu berechnen.

HashExcept schaltet möglicherweise dynamisch auf eine Nested-Loops-Strategie um, wenn eine Speicherknappheit festgestellt wird. Tritt dieser Fall ein, wird ein Performance-Zähler erhöht. Sie können diesen Monitor anhand der Datenbank- oder Verbindungseigenschaft "QueryLowMemoryStrategy" lesen, im Statistikwert "QueryLowMemoryStrategy" im grafischen Plan (wenn die Ausführung Statistiken umfasst) oder im Zähler "Abfrage: Strategien für Speichermangel" im Windows-Systemmonitor.

HashExcept ist unter Windows Mobile bei Speicherknappheit deaktiviert.

EXCEPT, MergeExcept und HashExcept sind mit einem der DISTINCT-Algorithmen gekoppelt, um zu gewährleisten, dass das Ergebnis keine Duplikate enthält. Bei EXCEPT ALL werden HashExceptAll und MergeExceptAll mit RowReplicate gekoppelt, wodurch die korrekte Anzahl von Duplikaten im Ergebnis berechnet wird.

 Siehe auch