HGDB中如何在线重建索引

目录
文档用途
详细信息

文档用途
本文档主要用于指导瀚高数据库使用人员在线重建索引。

详细信息
情景一:单个索引/少量索引重建
查询某个表对应的索引信息:

highgo=# select * from pg_indexes where tablename = 'test01'; 

 schemaname | tablename |   indexname   | tablespace |                           indexdef                           

------------+-----------+---------------+------------+--------------------------------------------------------------

 public     | test01    | idx_test01_id |            | CREATE INDEX idx_test01_id ON public.test01 USING btree (id)

(1 row)

删除目标索引:

highgo=# drop index idx_test01_id ;

DROP INDEX

重建新索引:

highgo=# create index idx_test01_id on test01(id);

CREATE INDEX

情景二:大量索引重建
如果是对整个表所有索引重建:

highgo=# reindex table test01 ;

REINDEX

highgo=# select * from pg_indexes where tablename = 'test01'; 

 schemaname | tablename |   indexname   | tablespace |                           indexdef                           

------------+-----------+---------------+------------+--------------------------------------------------------------

 public     | test01    | idx_test01_id |            | CREATE INDEX idx_test01_id ON public.test01 USING btree (id)

(1 row)

注意事项:如果该表索引为空,则reindex不会创建任何索引。

知识拓展:

REINDEX语句对象还可以是数据库和索引自身,即:

REINDEX DATABASE testdb; 

REINDEX TABLE my_table;

REINDEX INDEX aa_pkey;

情景三:大量索引重建,且部分索引不重建
SQL拼接处所有索引删除语句:

with inx_name as ( select * from pg_indexes where indexname like '%xxxxx%' )

select  'drop index  ' ||  inx_name.indexname  || ';' from inx_name;

选中自己所需索引进行删除操作即可。

上一篇:排序算法


下一篇:GFPGAN源码分析—第二篇