Règles de délégation : Où Clause

La clause WHERE est la première clause d’une requête SQL à être évaluée pour la délégation au fournisseur de source de données. Si la clause WHERE ne peut pas être déléguée, le reste de la requête ne peut pas être délégué.

Spectrum Spatial délègue au fournisseur de source de données autant d'opérateurs que le fournisseur de source de données en prend en charge, avec une emphase sur les opérateurs spatiaux. Les règles suivantes s'appliquent à la clause WHERE pour déterminer ce qui peut être délégué au fournisseur de source de données :

  1. Seuls les opérateurs booléens peuvent être délégués au fournisseur de source de données. Les fonctions booléennes ne peuvent pas être déléguées.
  2. Les opérateurs booléens doivent être de la forme suivante : <column> operator <constant>. Si la requête d'entrée est écrite sous la forme <constant> operator <column> et si l'opérateur comporte un opérateur inverse, la requête peut être reformulée sous la forme <column> <inverse operator> <constant> pour respecter cette règle.
  3. Si la clause WHERE contient un opérateur AND et si le fournisseur de données prend en charge AND et les opérateurs spatiaux et non spatiaux mixtes, tous les opérateurs pris en charge par le fournisseur de données sont délégués. Tout ce que le fournisseur de source de données ne prend pas en charge est géré par Spectrum Spatial.
  4. Si la clause WHERE contient un opérateur AND et si le fournisseur de données prend en charge AND, mais pas les opérateurs spatiaux et non spatiaux mixtes, seuls les opérateurs spatiaux pris en charge par le fournisseur de données sont délégués. Les opérateurs restants sont évalués par Spectrum Spatial.
  5. Si la clause WHERE contient un opérateur AND, si le fournisseur de données prend en charge AND et si la clause WHERE contient uniquement des opérateurs non spatiaux, les opérateurs pris en charge par le fournisseur de données sont délégués.
  6. Si la clause WHERE contient un opérateur AND et si le fournisseur de données ne prend pas en charge AND, tous les opérateurs sont évalués et celui ayant le score le plus élevé est délégué. Le score des opérateurs spatiaux est supérieur à celui des opérateurs non spatiaux. Reportez-vous à la section Comment sont notées et opérations.
  7. Si la clause WHERE contienne OR ou NOT et si le fournisseur de données prend en charge OR et NOT et tous les opérateurs, la requête toute entière est déléguée au fournisseur de source de données. Il n'existe aucune délégation partielle comme dans le cas de l'opérateur AND.