目录
文档用途
详细信息
文档用途
本文档主要用于指导瀚高数据库使用人员在线重建索引。
详细信息
情景一:单个索引/少量索引重建
查询某个表对应的索引信息:
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;
选中自己所需索引进行删除操作即可。