database - 使用现有索引恢复数据库时是否需要重建索引?

标签 database postgresql

我删除了一个非常大的表上的一些索引,并意识到我需要它们。我想知道我是否可以使用在删除索引之前获取的数据库副本来恢复,而不是同时添加它们,这将花费很长时间?

最佳答案

如果“数据库副本”是指文件级别的 Postgres DB 目录副本(Postgres 未运行以获得一致状态),则,这样的快照包括一切,索引也是如此。您可以将其复制回文件级别,然后启动 Postgres - 当然可以回退到之前的状态。

如果,OTOH,你的意思是使用标准 Postgres 工具 pg_dumppg_dumpall 进行备份,那么,物理上不包括索引。只是构建它们的说明。包含大量功能相关值的垃圾是没有意义的。从恢复的数据构建它们可能同样快。

无论哪种方式,在对表进行更改后,您都无法将旧快照中的索引添加回实时数据库。这在逻辑上是不可能的。那么除了以一种或另一种方式重建索引之外别无选择。

关于database - 使用现有索引恢复数据库时是否需要重建索引?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54935159/

相关文章:

java - com.mongodb.MongoTimeoutException : Timed out after 10000 ms while waiting to connect

sql - 为什么没有匹配行的 regexp_matches 像过滤器一样工作,并且不返回?

SQL:如何找到从一个表链接到另一个表的最小条目数

database - 插入时检查值

python - 将数据库用作 Custom_Storage 和 Libtorrent (Python)

database - 使用舞台区域失败。 AZURE 存储中的原因 : Server failed to authenticate the request.(状态代码:401;错误代码:InvalidAuthenticationInfo)

c++ - libpq 中的查询流水线在哪里?

javascript - 使用 supabase 计算 DISTINCT 值的出现次数

java - PSQL异常 : ERROR: insert or update on table "*" violates foreign key constraint

java - 每次打开 Android 虚拟设备时,Android SQLite 数据库都不会保留它的值