このトピックでは、GiSTインデックス作成の拡張であるTrajGiSTインデックス作成について説明します。 軌道データを格納する列にTrajGiSTインデックスを作成できます。
背景情報
TrajGiSTは、次の点でGiSTよりも優れています。
TrajGiSTは、インデックスのオーバーヘッドを推定するためのより良い方法を提供します。 複数のインデックスが作成された場合、TrajGiSTはGiSTよりも効率的な方法でインデックスを選択できます。
TrajGiSTは、インデックスの上位互換性をサポートします。 インデックスが十分な情報を提供しないために正確な結果を得ることができない場合でも、インデックスベースのスキャンを使用して粗い結果を得ることができます。 たとえば、t軸にのみインデックスを作成したが、ST_{2DT}Intersects関数を呼び出したいとします。 この場合、t軸のインデックスに基づいて、指定した時間範囲内にない軌跡を除外できます。
構文
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_ndIntersect、ST_ndDWithin、ST_ndContains、ST_ndWithinによって実行されるクエリを高速化するのに役立ちます。
サポートされているオペレーターファミリー
次の表に、TrajGisTでサポートされている演算子ファミリを示します。
オペレータ家族 | 説明 |
trajgist_ops_z | z軸上にインデックスを作成します。 このタイプのインデックスは、z軸のみをカバーするクエリをサポートします。 |
trajgist_ops_t | t軸にインデックスを作成します。 このタイプのインデックスは、t軸のみをカバーするクエリをサポートします。 |
trajgist_ops_2d | x軸とy軸にインデックスを作成します。 このタイプのインデックスは、x軸とy軸のみをカバーするクエリをサポートします。 |
trajgist_ops_2dt | x、y、t軸にインデックスを作成します。 このタイプのインデックスは、x、y、およびt軸をカバーするクエリをサポートします。 |
trajgist_ops_3d | x、y、z軸にインデックスを作成します。 このタイプのインデックスは、x、y、およびz軸をカバーするクエリをサポートします。 |
trajgist_ops_3dt | x、y、z、t軸にインデックスを作成します。 このタイプのインデックスは、前述の5つの演算子ファミリーでサポートされるすべてのクエリをサポートします。 |
trajgist_ops_multi | クエリを高速化するために、複数の境界ボックスにインデックスを作成します。 ただし、システムはインデックスを作成するためにより多くの時間とストレージを必要とします。 |
TrajGiSTを使用すると、単一の列にインデックスを作成できます。 TrajGiSTでは、一部の列に軌道データ以外の種類のデータが格納されている場合、複数の列にインデックスを作成することはできません。