文档下载建议反馈入口

  • 创建索引
  • 查看索引
  • 修改索引
  • 删除索引

索引

创建索引

KaiwuDB 支持为时序表的普通标签列创建索引。创建索引后,用户在执行以下查询时,系统可以利用索引快速定位数据,而无需扫描整张表,从而提高查询性能:

  • 等值查询,且输出列不含主标签列, 例如 select c1, tag1 from t1 where tag1 = 100;
  • IN 查询,且输出列不含主标签列或其他普通标签索引,例如 select c1, tag1 from t1 where tag1 in (100,200,300);
  • 已创建索引标签与其他普通列的组合查询,组合条件为 AND, 且输出列不含主标签列,例如 select c1, tag1 from t1 where tag1 = 100 and c1 = 200;
  • 多个已创建索引标签的组合查询,组合条件为 OR 或 AND,且输出列不含主标签列,例如 select c1, tag1 from t1 where tag1 = 100 or tag2 = 100;

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员或拥有目标表的 CREATE 权限,默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 sysadmin 角色的成员或者是拥有目标表 CREATE 权限的普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
index_name待创建的索引名称。该名称在数据库中必须唯一,并且遵循数据库标识符规则
table_name目标表的名称。
tag_name_list待创建索引的标签名称列表,最多支持指定 4 个标签,标签名称之间用逗号分隔。注意:标签必须是普通标签,而不是主标签,数据类型必须是整数类型、浮点类型、CHAR 或 NCHAR 类型。

语法示例

以下示例为 temperature 表的 sensor_type 普通标签列创建索引。

CREATE INDEX sensor_type_index ON temperature (sensor_type);

查看索引

SHOW INDEXES 语句用于查看时序表的索引信息。

所需权限

用户拥有目标表的任何权限。

语法格式

参数说明

参数说明
table_name索引所在表的名称。

语法示例

以下示例查看 temperature 表的索引。

SHOW INDEXES FROM temperature;

修改索引

ALTER INDEX 语句用于更改索引的名称。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员或拥有索引所属表的 CREATE 权限,默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 sysadmin 角色的成员或者是拥有索引所属表 CREATE 权限的普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
index_name当前索引的名称。
new_name索引的新名称。该名称在数据库中必须唯一,并且遵循数据库标识符规则

语法示例

以下示例将 temperature 表的 sensor_type_index 索引重命名为 sensor_index

-- 1. 重命名索引。
ALTER INDEX sensor_type_index RENAME TO sensor_index;

-- 2. 检查是否修改成功。
SHOW INDEXES FROM temperature;

删除索引

DROP INDEX 语句用于删除表的索引。

所需权限

  • 非三权分立模式下,用户是 admin 角色的成员或拥有目标表的 CREATE 权限,默认情况下,root 用户属于 admin 角色。
  • 三权分立模式下,用户是 sysadmin 角色的成员或者是拥有目标表 CREATE 权限的普通用户。默认情况下,sysroot 用户属于 sysadmin 角色。

语法格式

参数说明

参数说明
table_name待删除索引所在的表名。
index_name待删除索引的名称。

语法示例

以下示例删除 temperature 表中的 sensor_index 索引。

-- 1. 删除 temperature 表中的 sensor_index 索引。
DROP INDEX temperature.sensor_index;

-- 2. 查看索引是否删除成功。
SHOW INDEXES FROM temperature;