如何在1000张表上批量创建索引

How to batch create index on 1000 tables

我有一个父 table 在 postgres 9.3 db 中称为 ABC

和大约 1000 table 继承 ABC

ABC_1
ABC_2
...
ABC_1002

由于父项 table 的索引不会影响子项 table,因此我必须单独为它们创建索引。

是否有任何批处理方法可以自动在这些 table 上创建索引?

如果您的表确实如问题中所命名(我的意思是枚举“_1”、“_2”)等。那么这个简单的查询将为您生成一组 CREATE INDEX

SELECT
    'CREATE INDEX ON ' || quote_ident('ABC_' || sub.num ) || ' (column_name);' 
FROM
    (SELECT num FROM generate_series(1,1000) num) sub;

但老实说,我希望您只提供简化的示例,所以请查看我关于使用 SQL 生成 DDL 命令的两个答案(, second answer) and this answer 以了解如何获取子关系列表来自系统表。