SQL クエリーでの演算順序の制御
SQL クエリーを実行する場合、期待どおりの結果を出すためには、項目が評価される順序を理解し管理することが重要です。
このシナリオでは、世界の人口統計データベースを扱っていて、人口が 100,000 人以上であるか州都であるかのいずれかの条件を満たす中国のすべての都市を検出したいとします。
項目のグループ化とグループ解除
複数の項目を含むクエリーでは、項目をグループ化またはグループ解除して演算の順序を制御できます。 2 つ以上の項目をグループ化するには、クリックしながら Shift キーを押して項目を選択し、項目のグループ化
をクリックします。 項目のグループ化を解除するには、グループ内の項目を選択し、項目のグループ解除
をクリックします。
以下は、同じクエリーの 2 つの例です。 最初の例では、項目のグループ化が使用されていないため、返される結果は期待どおりではありません。 2 つ目の例では、演算の順序が正しくなるよう項目をグループ化しているため、期待どおりの結果が返されます。
グループ化されていない項目
このグループ化されていないクエリーを実行すると、最初に中国のすべての都市が検索され、次に、人口が 100,000 人以上の中国の都市がフィルターされます。 次に、Or 演算子に基づいて、データセット全体が評価され、州都が返されます。 最終的な結果として、人口が 100,000 人以上の中国の都市と州都である世界の都市が検索されます。これは、求める結果ではありません。 こうなる理由は、And 演算子の方が Or 演算子よりも優先度が高いため、And が先に評価されるからです。

グループ化された項目
この 2 番目の例で、求める結果を返すには、Or 演算子が先に評価されるようにする必要があります。 演算の順序を適用するように項目をグループ化できます。 グループ内のすべての項目が、グループ外の項目より前に評価されます。

グループ化が適用されると、クエリーでは、まず、グループ内の項目が評価されます。すなわち、人口が 100,000 人以上であるか、または州都であるかどうかが評価されます。 次に、これが中国の都市であるかどうかが評価されます。 And 演算子により、クエリーで、両方の条件を満たす都市が正しく返されます。すなわち、人口が 100,000 人以上であるか、州都である中国の都市が返されます。
項目をグループ化することは、括弧で囲むことと同じです。 SQL エディター モードでは、このクエリーは次のようになります。
CNTRY_NAME = 'China' And (POP > 100000 Or STATUS = 'Provincial capital')
属性項目を優先
エンタープライズ ジオデータベースのフィーチャクラスに対してクエリーを実行すると、クライアント (ArcGIS Pro) は SQL クエリーを使用してデータベースにアクセスし、データベース内のデータ ソースに対してクエリーを実行して結果を返します。 マップ ビューを操作する際、空間項目を、データベース内のフィーチャクラスに対して実行されるクエリーの一部として実行するか (デフォルト)、クエリーの属性項目が処理されるまでクライアント側での実行を遅らせるかを選択できます。 クエリー編集モードで、メニュー アイコン
をクリックし、属性項目を優先 オプションをオンにすると、データベースでフィーチャがフィルターされた後にクライアントで空間項目が適用されます。 これにより、描画パフォーマンスが向上する可能性があります。
注意:
このオプションは、レイヤーのデータ ソースがエンタープライズ ジオデータベースのフィーチャクラスである場合にのみ表示されます。