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目前仅支持单列索引,不能与其它(非轨迹)列建立多列索引。