Beispiele für den AND-Operator

In den folgenden Beispielen wird bei Abfragen der AND-Operator verwendet und gezeigt, wie die Elemente an den Datenquellenanbieter delegiert werden können.

Beispiel 1:

SELECT Obj FROM table WHERE pop>10000 AND city='Austin' AND hhinc<75000 

Wenn der Datenquellenanbieter AND, >, = und < unterstützt, wird die gesamte Abfrage an den Datenquellenanbieter delegiert.

Wenn der Datenquellenanbieter AND und einige der anderen Operatoren unterstützt, werden diese Operatoren delegiert und der Rest wird von Spectrum Spatial verarbeitet.

Wenn der Datenquellenanbieter „>“ oder „<“ nicht unterstützt, wird Folgendes an den Datenquellenanbieter delegiert:

SELECT pop,hhinc FROM table WHERE city='Austin

Spectrum Spatial verwendet die Ergebnisse der delegierten Abfrage für die Auswertung der ursprünglichen WHERE-Klausel.

SELECT obj FROM <results of the delegation> WHERE pop>10000 AND city='Austin AND hholdinc<75000

Beispiel 2:

Wenn der Datenquellenanbieter „AND“ nicht unterstützt, kann gemäß den Regeln nur ein Vorgang delegiert werden. Zur Bestimmung des zu delegierenden Vorgangs vergibt Spectrum Spatial Punktzahlen für die Operatoren und sendet den Operator mit der höchsten Punktzahl an den Datenquellenanbieter. Die Bewertung erfolgt bei einer theoretischen Umschreibung der Abfrage, die ausgeführt werden könnte, wenn die Datenquelle alle Vorgänge unterstützen würde.

Neben „AND“ unterstützt die Datenquelle in diesem Beispiel auch nicht „Enthält“. Sie unterstützt jedoch „Envelope_Intersects“.

SELECT city FROM table WHERE Obj Contains <geom> AND pop > 5000 

wird umgewandelt in:

SELECT city FROM table WHERE Obj Envelope_Intersects <geom> AND pop > 5000
Spectrum Spatial bewertet „Envelope_Intersects“ höher als der logische Operator „>“. Dies ist auch der Fall, wenn ein räumlicher Vorgang über einen nicht räumlichen Operator delegiert wird. Folgendes wird an die Datenquelle delegiert:
SELECT city FROM table WHERE Obj Envelope_Intersects <geom>

Spectrum Spatial wertet die ursprüngliche Abfrage anhand des Ergebnisses der oben stehenden Abfrage aus:

SELECT city FROM <results of the delegation> WHERE Obj contains <geom> AND pop > 5000