我可以用
列出分区SELECT
child.relname AS child_schema
FROM pg_inherits
JOIN pg_class child ON pg_inherits.inhrelid = child.oid ;
是否保证它们按创建顺序列出?因为那时只需要额外的LIMIT 1
。否则,这将打印最旧的,名称中编号最小的那个:(我的分区名为name_1 name_2 name_3 ...)
SELECT
MIN ( trim(leading 'name_' from child.relname)::int ) AS child_schema
FROM pg_inherits
JOIN pg_class child ON pg_inherits.inhrelid = child.oid ;
然后我需要创建一个使用结果执行DROP TABLE
的脚本?有没有更简单的方法?
答案 0 :(得分:0)
是否保证它们按创建顺序列出?
没有。这可能只是顺序扫描而没有删除表,但如果更改查询和计划更改,则可能会按顺序获得意外结果。我也希望一旦重用空闲空间,排序也可能会改变。
您当前的修剪查询是最好的方法。坚持下去。