Delegierungsregeln: WHERE-Klausel

Die WHERE-Klausel ist die erste Klausel in einer SQL-Abfrage, die auf eine Delegierung an einen Datenquellenanbieter hin überprüft wird. Wenn die WHERE-Klausel nicht delegiert werden kann, kann auch der Rest der Abfrage nicht delegiert werden.

Spectrum Spatial delegiert so viele Operatoren an einen Datenquellenanbieter, wie dieser unterstützt. Geodatenoperatoren werden dabei bevorzugt. Die folgenden Regeln gelten für die WHERE-Klausel bei der Feststellung, was an den Datenanbieter delegiert werden kann:

  1. Nur boolesche Operatoren können an einen Datenquellenanbieter delegiert werden. Boolesche Funktionen können nicht delegiert werden.
  2. Boolesche Operatoren müssen in der folgenden Form vorliegen: <column> operator <constant>. Wenn die Eingabeabfrage als <constant> operator <column> verfasst wurde und der Operator über einen inversen Operator verfügt, kann die Abfrage umformuliert werden als <column> <inverse operator> <constant>, um diese Regel zu erfüllen.
  3. Wenn die WHERE-Klausel einen AND-Operator enthält und der Datenanbieter „AND“ sowie Geodatenoperatoren gemischt mit Nicht-Geodatenoperatoren unterstützt, werden alle vom Datenanbieter unterstützten Operatoren delegiert. Alles, was der Datenquellenanbieter nicht unterstützt, wird von Spectrum Spatial verarbeitet.
  4. Wenn die WHERE-Klausel einen AND-Operator enthält und der Datenanbieter „AND“, aber nicht Geodatenoperatoren gemischt mit Nicht-Geodatenoperatoren unterstützt, werden nur die vom Datenanbieter unterstützten Geodatenoperatoren delegiert. Der Rest wird von Spectrum Spatial ausgewertet.
  5. Wenn die WHERE-Klausel einen AND-Operator enthält, der Datenanbieter „AND“ unterstützt und die WHERE-Klausel nur Nicht-Geodatenoperatoren enthält, werden die vom Datenanbieter unterstützten Operatoren delegiert.
  6. Wenn die WHERE-Klausel einen AND-Operator enthält und der Datenanbieter „AND“ nicht unterstützt, werden alle Operatoren nach Punkten bewertet und der mit der höchsten Punktzahl wird delegiert. Geodatenoperatoren erhalten eine höhere Punktzahl als Nicht-Geodatenoperatoren. Siehe Punktbewertung von AND-Vorgängen.
  7. Wenn die WHERE-Klausel ein „OR“ oder ein „NOT“ enthält und der Datenanbieter alle Operatoren einschließlich „OR“ und „NOT“ unterstützt, wird die gesamte Abfrage an den Datenquellenanbieter delegiert. Es findet keine teilweise Delegierung wie beim AND-Operator statt.