Punktbewertung von AND-Vorgängen

Den Regeln zur Delegierung von AND-Vorgängen an die Datenquelle zufolge kann nur ein Vorgang delegiert werden, wenn die Datenquelle „AND“ nicht unterstützt. Spectrum Spatial überprüft alle Vorgänge in der WHERE-Klausel und bewertet sie hoch oder niedrig, um festzustellen, welcher Vorgang delegiert werden soll. Der Vorgang mit der höchsten Punktzahl wird an die Datenquelle delegiert. Spectrum Spatial verarbeitet die verbleibenden Vorgänge auf der Clientseite.

Im Folgenden finden Sie die Reihenfolge der Prioritäten für die Delegierung:

Bedienung Beispiel
Distanz MI_Distance() < 5
Geometrie where MI_Intersects(obj, MI_Buffer(MI_Point(10.5,51,'epsg:4326'), 200, 'mi', 'Spherical', 12))
Envelope_Intersects where obj EnvelopesIntersect MI_Box(-5,42,33,57,'epsg:4326')
Schlüssel MI_Key = 5
Vergleichsattribute pop > 10000, city = "Austin"
InList city In ("FL", "OH", "NY")
Ist NULL city Is Null
Like city Like "%City"
Zwischen pop Between 5000 and 50000
Logische Operatoren OR, NOT where NOT MI_Envelope(obj) within MI_Box(-180, -90, 180, 90, 'EPSG:4326')

Spectrum Spatial wird bei der Delegierung immer einen Geodatenvorgang einem Nicht-Geodatenvorgang vorziehen.

Vor der Punktbewertung wandelt Spectrum Spatial die WHERE-Klausel in die effizienteste Abfrage um, die an eine Datenquelle delegiert werden könnte, die alles unterstützen würde. Spectrum Spatial bewertet dann die Vorgänge in dieser Version der Klausel. Die Klausel wird umstrukturiert, um dem zu entsprechen, was von der Datenquelle unterstützt wird. Anschließend wird der Vorgang mit der höchsten Punktzahl an die Datenquelle gesendet. Siehe Beispiel 2.

Wenn sich gleiche Punktzahlen ergeben, was passieren kann, wenn in der WHERE-Klausel zwei Vergleichsoperatoren vorhanden sind, erhält der Vorgang Vorrang, der weiter links steht. Der Verfasser der Abfrage sollte die Daten gut genug kennen, um die Reihenfolge der Vorgänge in einer WHERE-Klausel entsprechend festzulegen. Wenn eine Spalte beispielsweise indiziert ist, wäre es effizienter, diese Spalte an eine Datenquelle zu delegieren, als eine nicht indizierte Spalte. Spectrum Spatial untersucht nicht die Daten, um diese Entscheidung zu treffen.