BUILD INDEX
构建索引
对表中已有的存量数据构建索引。目前支持布隆过滤器索引、倒排索引和向量索引。
语法
-- 语法 1:对全表存量数据构建索引
BUILD INDEX index_name ON [schema.]table_name;
-- 语法 2:仅对指定分区构建索引,支持 =、!=、>、>=、<、<= 运算符
BUILD INDEX index_name ON [schema.]table_name
WHERE partition_col1 = 'value1' [AND partition_col2 = 'value2' ...];
参数说明
| 参数 | 必填 | 说明 |
|---|
index_name
index_name | 是 | 要构建的索引名称,索引必须已通过 CREATE BLOOMFILTER INDEX
CREATE BLOOMFILTER INDEX 、CREATE INVERTED INDEX
CREATE INVERTED INDEX 、CREATE VECTOR INDEX
CREATE VECTOR INDEX 或建表时定义 |
schema
schema | 否 | 表所在的 Schema 名称,不指定则使用当前 Schema |
table_name
table_name | 是 | 目标表名 |
WHERE
WHERE 子句 | 否 | 指定分区条件,仅对匹配的分区构建索引,可指定一个或多个分区列 |
说明
CREATE BLOOMFILTER INDEX
CREATE BLOOMFILTER INDEX
、
CREATE INVERTED INDEX
CREATE INVERTED INDEX
和
CREATE VECTOR INDEX
CREATE VECTOR INDEX
仅对创建索引之后新写入的数据生效,已有的存量数据不会自动建立索引。执行
BUILD INDEX
BUILD INDEX
可以对存量数据补建布隆过滤器索引、倒排索引或向量索引。
BUILD INDEX
BUILD INDEX
是同步命令,执行过程会消耗计算资源。可通过 Job Profile 查看构建进度。
使用示例
- 对
doc_test.employees
doc_test.employees
表的全部存量数据构建倒排索引:
首先确认索引已存在:
SHOW INDEX FROM doc_test.employees;
+---------------+------------+
| index_name | index_type |
+---------------+------------+
| idx_emp_name | inverted |
+---------------+------------+
然后对存量数据构建索引(需先切换到对应 Schema):
USE SCHEMA doc_test;
BUILD INDEX idx_emp_name ON doc_test.employees;
- 对分区表的指定分区构建索引:
BUILD INDEX order_year_index ON public.t WHERE order_year = '2023';
- 对多个分区条件构建索引:
BUILD INDEX order_year_index ON public.t
WHERE order_year = '2023' AND order_month = '01';
注意事项
BUILD INDEX
BUILD INDEX
是同步命令,执行过程会消耗计算资源。
- 对大数据量的表构建索引会消耗较多计算资源,建议在业务低峰期执行。
- 对分区表,建议以分区为粒度分批构建索引,避免单次任务过大。
- 索引名称在 Schema 内必须唯一,
BUILD INDEX
BUILD INDEX
时使用的 index_name
index_name
不需要加 Schema 前缀,但需要确保当前 Schema 与表所在 Schema 一致,或通过 USE SCHEMA
USE SCHEMA
切换。
- 相关命令:创建布隆过滤器索引、创建倒排索引、创建向量索引、查看索引、删除索引
相关指南
- 查询加速索引:Bloomfilter、倒排索引、向量索引的选型与使用场景