轨迹类型支持不同的索引方式。

查看默认的索引方式

-- 默认的索引方式
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);