委任規則: WHERE 句

WHERE 句は、SQL クエリにおいて、データ ソース プロバイダに委任できるかどうかが最初に評価される句です。WHERE 句が委任できなければ、クエリの残りの部分も委任できません。

Spectrum Spatial は空間演算子に重点を置いて、データ ソース プロバイダがサポートする演算子をできるだけ多くデータ ソース プロバイダに委任します。データ ソース プロバイダに何を委任できるか判断する際に、以下の規則が WHERE 句に適用されます。

  1. Boolean 演算子のみがデータ ソース プロバイダに委任できます。Boolean 関数は委任できません。
  2. Boolean 演算子は、<column> operator <constant> という形式になっている必要があります。入力クエリが <constant> operator <column> と記述されている場合、演算子に逆演算子があれば、クエリを <column> <inverse operator> <constant> と書き換えることにより、この規則を満たすことができます。
  3. WHERE 句に AND 演算子が含まれており、データ プロバイダが AND をサポートし、加えて空間演算子と非空間演算子の混合もサポートする場合、すべての演算子がデータ プロバイダに委任されます。データ ソース プロバイダがサポートしない部分はすべて、Spectrum Spatial によって処理されます。
  4. WHERE 句に AND 演算子が含まれており、データ プロバイダが AND をサポートするが、空間演算子と非空間演算子の混合はサポートしない場合、データ プロバイダがサポートする空間演算子のみが委任されます。残りは Spectrum Spatial で評価されます。
  5. WHERE 句に AND 演算子が含まれており、データ プロバイダが AND をサポートし、WHERE 句に非空間演算子しか含まれない場合、データ プロバイダがサポートする演算子が委任されます。
  6. WHERE 句に AND 演算子が含まれており、データ プロバイダが AND をサポートしない場合、すべての演算子のスコアが計算され、最もスコアの高い演算子が委任されます。空間演算子のスコアは非空間演算子よりも高くなります。AND 操作のスコアリング を参照してください。
  7. WHERE 句に OR または NOT が含まれており、データ プロバイダが OR および NOT とすべての演算子をサポートする場合、クエリ全体がデータ ソース プロバイダに委任されます。AND 演算子の場合のような、部分的な委任は行われません。