全部產品
Search
文件中心

PolarDB:TrajGisT索引

更新時間:Jul 06, 2024

TrajGisT索引是GisT索引的擴充。

背景資訊

在GisT基礎上,TrajGisT提供額外兩點最佳化:

  • TrajGisT對索引的開銷估計進行了最佳化,當建立了多個索引時,TrajGisT可以比GisT更好地在不同索引之間進行選擇。
  • TrajGist支援索引的向上相容,即當索引所記錄的資訊不足以對查詢進行精確判斷時,仍然可以通過索引掃描得到一個粗粒度的結果。例如只建立了時間索引,但需要進行2維和時間的2DTIntersects操作時,可以用時間索引過濾掉和給定的時間段不相交的軌跡。

文法

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函數的查詢。

支援運算元族

當前支援7個索引的運算元族,說明如下。

運算元族名稱描述
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軸範圍建立索引,支援以上全部查詢。
trajgist_ops_multi建立多外包框索引,以加速查詢,但建立更慢並佔用更多空間。
說明 TrajGist目前僅支援單列索引,不能與其它(非軌跡)列建立多列索引。