索引
创建索引
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;