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 » Sonstige Algorithmen

 

Filter-Algorithmen (Filter, PreFilter)

Filter wenden Suchbedingungen an. Dazu gehören alle Arten von Prädikaten, Vergleiche zwischen beteiligten Unterabfrage-Bedingungen sowie EXISTS- und NOT EXISTS-Unterabfragen (und andere Formen quantifizierter Unterabfragen). Die Suchbedingungen erscheinen in den WHERE- und HAVING-Klauseln der Anweisung und in den ON-Bedingungen von JOINS in der FROM-Klausel.

Der Optimierer kann die Menge der Prädikate in den Suchbedingungen nach eigenem Ermessen vereinfachen und ändern, und er kann einen Zugriffsplan erstellen, der die Bedingungen in einer anderen Reihenfolge anwendet als in der Originalanweisung angegeben. Neuschreibungsptimierungen von Abfragen führen möglicherweise erhebliche Änderungen der in einem Plan geprüften Menge von Prädikaten durch.

In vielen Situationen kann es vorkommen, dass ein Prädikat in einer Abfrage nicht zur Existenz von Filter im Zugriffsplan führt. Verschiedene Algorithmen wie etwa IndexScan sind in der Lage, die Anwendung eines Prädikats zu erzwingen ohne einen expliziten Operator zu benötigen. Nehmen wir als Beispiel ein BETWEEN-Prädikat mit zwei literalen Konstanten, wobei die im Prädikat referenzierte Spalte indiziert ist. Das BETWEEN-Prädikat kann durch die unteren und oberen Grenzen für den Index-Scan erzwungen werden; der Plan für die Abfrage enthält dann keinen Filter. Prädikate, bei denen es sich um Join-Bedingungen handelt, erscheinen normalerweise nicht als Filter in einem Zugriffsplan.

PreFilter ist das Gleiche wie Filter, mit der Ausnahme, dass die Ausdrücke, die in den Prädikaten eines PreFilters verwendet werden, nicht von einer Tabelle oder Ansicht abhängig sind, die in der Abfrage referenziert wird. Ein einfaches Beispiel: Die Suchbedingung in der Klausel WHERE 1 = 2 kann als Vor-Filter ausgewertet werden.

 Siehe auch