pmi*_*hna 3 postgresql index update pg-restore amazon-rds
出于测试目的,我使用pg_restore
. 在新数据库中,我运行匿名化敏感数据的 SQL 查询。但是,像下面这样的查询会更新一个表中超过 2000 万条记录,该表具有约 10 个索引(在 期间创建pg_restore
)。
UPDATE users SET email = users.id || '@example.com',
phone_number = NULL;
Run Code Online (Sandbox Code Playgroud)
这需要几个小时的当前设置。
为了加快速度,我想为了运行而禁用表的索引update
,然后再次启用它们并重新索引表。我怎样才能做到这一点?还有其他方法可以加快速度UPDATE
吗?
笔记:
我试过了
UPDATE pg_index
SET indisready=false
WHERE indrelid = (
SELECT oid
FROM pg_class
WHERE relname='users'
);
Run Code Online (Sandbox Code Playgroud)但得到了下面的错误。
ERROR: permission denied for relation pg_index
Run Code Online (Sandbox Code Playgroud)
显然,您不能在 AWS RDS PostgreSQL 实例中以超级用户身份执行此操作。
还原数据时,请使用pg_restore --section=pre-data --section=data
. 这将忽略索引。
然后运行你想要的更新,然后运行 pg_restore --section=post-data