ジオデータベースでの属性インデックス

Standard または Advancedのライセンスで利用可能。

ArcGIS は、インデックスを使用して、データをすばやく特定します。 属性インデックスを使用して属性検索に一致するレコードを特定し、空間インデックスを使用して空間検索に一致するフィーチャを特定します。

属性インデックスを使用して、テーブル、フィーチャクラス、シェープファイル、または属性リレーションシップ クラスでの結合やその他の属性の検索を高速化することができます。 属性インデックスは、ArcGIS がテーブルからレコードを取得するときに使用するもう 1 つの方法です。 ほとんどの種類の属性検索では、テーブル全体のレコードを最初から最後まで検索するよりも、インデックスを使用してレコードを検索するほうが高速です。

既存のテーブル、フィーチャクラス、シェープファイル、または属性リレーションシップ クラスにデータを設定したら、頻繁に検索するフィールドに属性インデックスを作成できます。 理想的には、値が一意またはほとんど一意である列にインデックスを作成します。 インデックスを追加するたびにフィーチャクラスへの編集が少し遅くなるため、作成するインデックスは必要最低限にしてください。 属性インデックスを含むフィーチャクラスを編集するたびに、ArcGIS または DBMS はインデックスの保守を実行します。 頻繁に編集するフィールドや、Yes または No のような個別値がほどんどないフィールドでのインデックスの作成は避けます。これらのインデックスは、パフォーマンスに悪影響を及ぼす可能性があります。

属性インデックスを作成するには、ArcGIS Pro[プロパティ] ダイアログ ボックスにアクセスするか、[属性インデックスの追加 (Add Attribute Index)] ジオプロセシング ツールを使用します。 一度追加したインデックスは、いつでも削除することができ、必要に応じて再度追加することができます。

属性インデックスは複数の方法で作成することができます。 属性インデックスは単一のフィールドまたは複数のフィールドに対して作成することができ、一意に保つことができます。また、一部のジオデータベースでは、昇順または降順で作成することができます。 このトピックでは、これらの概念を簡単に説明します。 エンタープライズ ジオデータベースでインデックスを使用することにした場合、詳細な手順については DBMS のドキュメントをご参照ください。

ArcGIS Pro での属性インデックスの作成

属性インデックスをデータセットの 1 つまたは複数のフィールドに対して作成するには、[カタログ] ウィンドウでジオデータベースのフィーチャクラスまたはテーブル名を右クリックし、[プロパティ] ダイアログ ボックスを表示します。

  1. [カタログ] ウィンドウで、インデックスを作成するテーブル、フィーチャクラス、シェープファイル、または属性リレーションシップ クラスを右クリックし、[プロパティ] を選択します。
  2. [インデックス] タブを選択します。

    属性インデックス セクションに、このデータセットの既存のインデックスが表示されます。

    注意:

    FDO_OBJECTID インデックスは、各フィーチャを一意に識別するためにジオデータベースで作成および使用され、削除することはできません。 [FDO_OBJECTID] をクリックすると、[Fields] セクションに、このインデックスの作成対象となったフィールドが表示されます。

  3. 新しい属性インデックスを追加するには、[追加] をクリックします。
  4. [名前] に新しいインデックスの名前を入力します。
  5. 必要に応じて、フィールド値が一意である場合は、[一意の値] チェックボックスをオンにします。 昇順のインデックスを作成する場合は、[昇順] チェックボックスをオンにします。

    [一意の値] 設定と [昇順] 設定は、ファイル ジオデータベースで使用されないため、オフにしたままにします。 [昇順] 設定は、OracleSQL Server でも使用できません。

  6. [利用可能なフィールド] リストから、このインデックスを構築する 1 つ以上のフィールドをクリックします。
    注意:

    マルチフィールドのインデックスは、ファイル ジオデータベースではサポートされません。

  7. 右矢印ボタンをクリックして、1 つ以上のフィールドを [選択フィールド] リストへ移動します。
  8. 必要に応じて、複数のフィールドを選択した場合は、上向き/下向き矢印を使用して、インデックスでのフィールドの順番を変更します。
  9. [OK] をクリックして、インデックスを構築します。
  10. [OK] をクリックして、[プロパティ] ダイアログ ボックスを閉じます。

ジオプロセシングによる属性インデックスの作成

データ管理ツール ツールボックスの [インデックス] ツールセットには、属性インデックスの作成と削除のための主なツールが 2 つ含まれています。

データ管理ツール ツールボックスに含まれているインデックス ツールセット

[属性インデックスの追加 (Add Attribute Index)] ツールは、既存のテーブル、フィーチャクラス、または属性リレーションシップ クラスにシングルまたはマルチフィールドのインデックスを追加します。 これは、どの ArcGIS ライセンスでも使用可能ですが、エンタープライズ ジオデータベースの場合は、ArcGIS Desktop Standard または Advanced ライセンスでのみ使用できます。

[属性インデックスの削除 (Remove Attribute Index)] ツールは、既存のテーブル、フィーチャクラス、または属性リレーションシップ クラスからシングルまたはマルチフィールドのインデックスを削除します。 このツールもすべての ArcGIS ライセンスで利用できます。

属性インデックスの名前

エンタープライズ ジオデータベースのインデックスに名前を付ける際には、インデックスの対象となるテーブルや列を反映した名前を付けると効果的です。 ただし、インデックスが付いているテーブルの名前が変更された場合、インデックス名がそのテーブルを示さなくなる可能性があります。 一部の組織では、名前の先頭または末尾に IDX を付けるなど、インデックスにインデックスであることを示す名前を付けています。 たとえば、Addresses テーブルのインデックスに ADRS_APK_IDX という名前を付けることができます。ADRS は、このインデックスが Addresses テーブルのインデックスであることを示し、APK はインデックスが付いている列を示し、IDX はそれがインデックスであることを示します。

テーブル名と同様に、ジオデータベースのインデックス名には次の命名規則があります。

  • データベースにおいて一意でなければなりません。
  • 英字で始まらなければなりません。
  • スペースを含めることはできません
  • 予約語を含めることはできません。

ファイル ジオデータベースの属性インデックスの命名については、特に制限はありません。

ArcGIS では、属性インデックスの名前の長さが 16 文字に制限されています。 この制限は、異なるジオデータベース間でのデータの分散と共有を促すために、サポート対象のデータベースで許容される最短の長さに基づいています。

一意なインデックス

インデックスを作成する際には、一意なインデックスを作成するオプションを選択することができます。 このオプションを選択するのは、各レコードの属性が一意な値を持つ場合です。 これにより、データベースは最初に一致する値が見つかった時点で検索を中止できるため、この属性に対する検索が高速になります。

注意:

ユーザー定義フィールドに一意なインデックスを持つフィーチャクラスがフィーチャ データセットに含まれている場合、そのフィーチャ データセットの他のフィーチャクラスを編集することはできません。

注意:

一意の値設定はファイル ジオデータベースで使用されないので、オフにしたままにします。

昇順インデックスと降順インデックス

インデックスを作成する際には、昇順インデックスを作成するオプションを選択することができます。このオプションをオンにしなければ、降順インデックスが作成されます。 昇順インデックスとは、昇順で管理されるインデックスです。 たとえば、昇順インデックスでは、都市名の値が AthensBerlinLondonParis の順に表示され、降順インデックスでは、ParisLondonBerlinAthens の順に表示されます。

ほとんどの場合、インデックスが管理される方法によって取得の速度に差が出ることはほとんどあるいはまったくありません。ほとんどの検索では、インデックスを前方または後方のどちらにトラバースしても、効率は変わりません。

注意:

[昇順] 設定は Oracle でも SQL Server でもファイル ジオデータベースでも使用されないので、オフのままでかまいません。

シングルフィールド インデックスとマルチフィールド インデックス

ファイル ジオデータベースはマルチフィールド インデックスをサポートしません。 [プロパティ] ダイアログ ボックスではマルチフィールド インデックスを指定できません。 [属性インデックスの追加 (Add Attribute Index)] ツールでは、マルチフィールド インデックスの指定が可能です。作成したインデックスは [カタログ] ウィンドウの [プロパティ] ダイアログ ボックスではマルチフィールド インデックスとして表示されますが、実際には個々のフィールド上の個別のインデックスです。

ジオデータベースでは、シングルフィールドまたはマルチフィールドのインデックスを作成することができます。 マルチフィールド インデックスは、検索時に 2 つ以上のフィールドを指定することが多い場合に役立ちます。 この場合、マルチフィールド インデックスによる検索はシングルフィールド インデックスよりも 2 ~ 3 倍高速です。

マルチフィールド インデックスでのフィールドの順序は重要です。 マルチフィールド インデックスが列 A、列 B の順に構成されている場合、最初の検索では列 A が使用されます。 また、このようなインデックスは、列 B のみが関与する検索よりも、列 A のみが関与する検索で威力を発揮します。

マルチフィールド インデックスとシングルフィールド インデックスのどちらを作成すべきか、またはそれらを組み合わせるべきかどうかの決断にはトレードオフが伴い、最適な判断が明確であることはあまりありません。 ただし、多くの場合はさまざまな解決策があります。 たとえば、列 A のみを検索する場合、列 B のみを検索する場合、および両方を検索する場合がある場合は、次のいずれかの方法を選択することができます。

  • 列 A と列 B に別々のインデックスを作成します。
  • 列 A と列 B にマルチフィールド インデックスを作成します。 両方の列が関与する検索では、一般に、このインデックスを使用するほうが効率的です。 列 A のみが関与する検索では、このインデックスよりも列 A のシングルフィールド インデックスのほうが効率的です。 列 B のみが関与する検索では、このインデックスはあまり効果的ではありません。 これを補足するために、列 B に追加のインデックスを作成することができます。
  • 3 つのインデックス (列 A のインデックス、列 B のインデックス、列 A と列 B のマルチフィールド インデックス) をすべて作成します。 3 種類の検索が同じように実行されていて、テーブルの更新よりも検索のほうがはるかに多い場合には、この方法が適しています。