軌跡類型支持不同的索引方式。

查看默認的索引方式

-- 默認的索引方式
SELECT * FROM pg_opclass WHERE opcname LIKE '%traj%' AND opcdefault = true;

-- 默認的索引設置參數(針對trajgist_ops_multi索引方式)
SHOW ganos.trajectory.index_split_config;
索引方式分為兩大類:
  • 單外包框索引:將每條軌跡表示為一個單個的外包框。占用存儲空間少,但索引過濾效率低。可以根據查詢需要的維度使用不同維度的索引方式,例如trajgist_2d表示二維索引,trajgist_3dt表示3維+時間索引。
  • 多外包框索引:將每條軌跡分為多個部分,每個部分單獨表示為一個外包框,這樣每條軌跡就表示為多個外包框。占用存儲空間大,但索引過濾效率高。針對空間查詢,通常可以提高一倍以上的查詢效率。部分Ganos版本不支持創建此類索引。

指定索引類型

  • 指定建立二維+時間的索引。
    CREATE INDEX idx_2dt ON trajectory_table USING GiST(traj trajgist_2dt);
  • 刪除索引。
    DROP INDEX idx_2dt;
  • 設置多外包框切分方法,以每條軌跡固定切分為4個外包框為例。
    SET ganos.trajectory.index_split_config = '{"cut_point.even_divide":4}';
  • 建立一個多外包框索引。
    CREATE INDEX idx_2dt ON trajectory_table USING GiST(traj multi);