HGDB中如何在线重建索引

Posted 瀚高PG实验室

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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;

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

以上是关于HGDB中如何在线重建索引的主要内容,如果未能解决你的问题,请参考以下文章

MSSQL 重建索引(在线重建控制最大处理器数 MAXDOP )

HGDB索引关键字include

oracle重建失效索引

MySQL如何进行索引重建操作?

Android强制Fragment重建View

oracle没有锁不能建立索引