创建时空索引

更新时间: 2023-10-27 16:28:50

时空索引包括时空主键索引和时空二级索引,本文介绍创建时空索引的方法。

使用区别

下表介绍时空主键索引和时空二级索引在使用过程中的区别。

时空索引分类

是否支持多个时空列的构建

备注

时空主键索引

支持对多个时空列建立索引,但是建议只包含一个时空列,其他时空列可以构建时空二级索引。

只能在创建时空数据表时添加主键索引,添加后不支持修改、增加和删除操作。

时空二级索引

支持对多个时空列建立索引。

可以在创建时空数据表时添加二级索引,也可以在创建时空数据表之后添加二级索引。添加后支持增加和删除时空二级索引,不支持修改时空二级索引。

创建时空主键索引

时空编码作为主键索引的组成部分,此时主键索引为时空主键索引。创建时空主键索引的语法示例如下:

  • Z-ORDER索引函数对g列进行时空编码。

    -- 主键索引只包含Z-ORDER
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, PRIMARY KEY(Z-ORDER(g)));
    
    -- 主键索引包含Z-ORDER和ID的组合
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, PRIMARY KEY(Z-ORDER(g),id));
  • Z-ORDER索引函数对g列和t列进行时空编码。

    -- 主键索引只包含Z-ORDER
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(Z-ORDER(g,t)));
    
    -- 主键索引包含Z-ORDER和ID的组合
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(Z-ORDER(g,t),id));

创建时空二级索引

时空编码作为二级索引的组成部分,此时二级索引为时空二级索引。创建时空二级索引的示例如下:

  1. 设置时空数据表的属性。

    • 将主表的写入模式MUTABILITY设置为MUTABLE_LATEST

    • 将表的一致性CONSISTENCY设置为strong

    示例语句如下:

    -- 创建时空数据表
    CREATE TABLE point_table(id INT, g GEOMETRY(POINT), name VARCHAR, t LONG, PRIMARY KEY(id));
    -- 设置表属性
    ALTER TABLE point_table SET 'MUTABILITY'='MUTABLE_LATEST';
    ALTER TABLE point_table SET 'CONSISTENCY'='strong';
  2. 创建时空二级索引。

    • 使用Z-ORDER索引函数对g列进行时空编码。

      • 方式一:

        CREATE INDEX idx ON point_table (Z-ORDER(g));
      • 方式二:采用include(g)进行数据冗余,避免回表查询。

        CREATE INDEX idx ON point_table (Z-ORDER(g)) INCLUDE (g);
    • 使用Z-ORDER索引函数对g列和t列进行时空编码。

      • 方式一:

        CREATE INDEX idx ON point_table (Z-ORDER(g,t));
      • 方式二:采用include(g)进行数据冗余,避免回表查询。

        CREATE INDEX idx ON point_table (Z-ORDER(g,t)) INCLUDE (g);
阿里云首页 云原生多模数据库 Lindorm 相关技术圈