SQL クエリの操作順序と委任

SQL クエリの操作順序とは、Spectrum Spatial (または、実行計画を生成する任意のクエリ処理プログラム) がクエリ内の個々の句を解決する方法のことです。

委任とは、Spectrum Spatial がすべての処理を実行しなくてもよいように、クエリのどの部分をデータ ソース プロバイダに任せることができるかを説明する、規則集合のことです。データ ソース プロバイダが操作をサポートする場合、委任規則を満たすならばクエリを委任することができます。

操作順序と、クエリ内の操作順序がデータ ソース プロバイダへの委任に与える影響を理解することで、パフォーマンスを損なうことなく強力なクエリを作成できます。

標準的な SQL クエリは、次のように記述されます。
select city, avg(hhinc) FROM table WHERE state='ny' GROUP BY city ORDER BY city

以下に、クエリが評価される際の操作順序を示します。

[FROM table] [WHERE state='ny'] [SELECT city, avg(hhinc) GROUP BY city] [ORDER BY city]

state='ny' のフィルタリングが、行の選択よりも先に実行されることに注意してください。処理をデータ ソース プロバイダに委任する場合に、この順序は重要です。

例えば、データ ソース プロバイダが WHERE 句の演算子 '=' をサポートしない場合、Spectrum Spatial の規則に基づき、SELECT 句は委任できません。この場合は、Spectrum Spatial がこの処理を実行する必要があります。

委任の効果が最大限に発揮されるのは、WHERE 句が適切に構成されている場合です。WHERE 句が委任できなければ、クエリの残りの部分も委任できません。WHERE 句の規則の詳細については、委任規則: WHERE 句を参照してください。