REINDEX
是一个用于重建索引的实用程序命令。
REINDEX
在 PostgreSQL 7.0 中添加。
更改历史记录
- PostgreSQL 17
- PostgreSQL 16
- PostgreSQL 14
- PostgreSQL 12
- 添加了
CONCURRENTLY
选项(5dc92b84) - 可以使用
pg_stat_progress_create_index
跟踪REINDEX
的进度(提交 ab0dfc96)
- 添加了
- PostgreSQL 9.5
- PostgreSQL 8.1
- 添加了
REINDEX SYSTEM
选项(提交 4cc7a93d)
- 添加了
- PostgreSQL 7.0
- 添加(提交 e3a97b37)
示例
重建表索引
appdb=> REINDEX (VERBOSE) TABLE object; INFO: index "object_pkey" was reindexed DETAIL: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.01 s INFO: index "object_class_id_ix" was reindexed DETAIL: CPU: user: 0.00 s, system: 0.00 s, elapsed: 0.00 s REINDEX
重建数据库索引
在 PostgreSQL 15 及更早版本中,必须显式提供当前数据库名称
postgres=# REINDEX DATABASE; ERROR: syntax error at or near ";" LINE 1: REINDEX DATABASE; ^ postgres=# REINDEX DATABASE postgres; REINDEX
无法重建其他数据库的索引
postgres=# REINDEX DATABASE foo; ERROR: can only reindex the currently open database
参考
- PostgreSQL 文档: REINDEX