すべてのプロダクト
Search
ドキュメントセンター

ApsaraDB RDS:TrajGiST インデックス作成

最終更新日:Aug 22, 2026

TrajGiST は、トラジェクトリデータ向けの GiST (汎用検索ツリー) インデックス拡張です。トラジェクトリ列に TrajGiST インデックスを作成すると、時間のみ、空間のみ、空間と時間を組み合わせたフィルターを含む、空間および時間クエリを高速化できます。

仕組み

TrajGiST は、標準の GiST を次の 2 つの点で改善します:

  • インデックスコストの見積もりの改善:テーブルに複数のインデックスが存在する場合、TrajGiST はインデックスのオーバーヘッドをより正確に見積もることで、指定したクエリに対して最も効率的なインデックスを選択します。

  • 上位互換性:TrajGiST は部分インデックス (クエリが要求するディメンションより少ないディメンションをカバーするインデックス) を使用して、正確な計算の実行前に一致しないトラジェクトリをフィルターで除外できます。たとえば、t 軸のみのインデックスが存在し、ST_2DTIntersects を使用するクエリを実行する場合、インデックスは指定した時間範囲外のトラジェクトリを先にフィルターで除外します (インデックス単体では最終的な正確な結果を生成できない場合でも同様です)。

TrajGiST インデックスの作成

CREATE INDEX [index_name] ON table_name USING TRAJGIST(traj_col [operator_family]);
パラメーター 必須 説明 デフォルト
index_name いいえ インデックス名 自動生成
table_name はい トラジェクトリ列を含むテーブル
traj_col はい トラジェクトリ列名
operator_family いいえ インデックスが対象とする軸を決定するオペレーターファミリー trajgist_ops_multi

インデックス分割の動作を設定する際にオペレーターファミリーを指定するには、ganos.trajectory.index_split_config パラメーターを使用します。

このインデックスは、演算子および次の関数を使用するクエリを高速化します:ST_ndIntersectST_ndDWithinST_ndContainsST_ndWithin

オペレーターファミリーの選択

各オペレーターファミリーは、インデックスが対象とする軸、ひいてはその恩恵を受けるクエリを決定します。クエリで使用するディメンションに一致するオペレーターファミリーを選択してください。

オペレーターファミリー インデックス対象の軸 高速化されるクエリ
trajgist_ops_z z 標高ディメンションのみ
trajgist_ops_t t 時間ディメンションのみ
trajgist_ops_2d xy 空間 (2D) ディメンションのみ
trajgist_ops_2dt xyt 空間 (2D) + 時間ディメンション
trajgist_ops_3d xyz 空間 (3D) ディメンションのみ
trajgist_ops_3dt xyzt 上記の 5 つのオペレーターファミリーでサポートされるすべてのクエリ
trajgist_ops_multi 複数のバウンディングボックス すべてのクエリ。インデックス作成時間とストレージコストが増加します

ガイダンス:

  • 空間フィルターと時間フィルターを組み合わせる本番ワークロードの大半では、trajgist_ops_2dt または trajgist_ops_3dt を使用してください。

  • クエリパターンが混在しており、単一のインデックスであらゆるケースをカバーしたい場合は、trajgist_ops_multi (デフォルト) を使用してください。ただし、ストレージ使用量の増加と CREATE INDEX の実行時間の増加というコストが発生します。

  • クエリが一貫して 1 つのディメンションに対してのみフィルターし、インデックスサイズまたは作成時間が懸念される場合は、単一軸のファミリー (trajgist_ops_ttrajgist_ops_ztrajgist_ops_2d) を使用してください。

例:

t 軸のみのインデックス (時間でフィルターするクエリ用):

CREATE INDEX traj_t_idx ON trips USING TRAJGIST(traj trajgist_ops_t);

x、y、t 軸のインデックス (空間フィルターと時間フィルターを組み合わせるクエリ向け):

CREATE INDEX traj_2dt_idx ON trips USING TRAJGIST(traj trajgist_ops_2dt);

デフォルトの複数バウンディングボックス インデックス:

CREATE INDEX traj_idx ON trips USING TRAJGIST(traj);

制限事項

TrajGiST は、単一のトラジェクトリ列のインデックス作成のみをサポートします。複数の列にまたがる複合インデックス (1 つ以上の列がトラジェクトリ型ではない場合) はサポートされません。