如何核算一个postgres模式?

时间:2019-04-26 17:20:52

标签: postgresql

我正在了解自己的Postgres SQL知识的极限,而且我不确定如何诊断此问题。请原谅我的问题。随着(预期)后续问题的到来,我愿意更新该问题。

我有一个相当复杂的数据库结构,其中在一个模式下,许多表通过外键相互连接。不幸的是,我无法揭示模式本身。

其中一个表称为“ A”,用于存储近100K条记录。它与其他两个表具有外键关系,一个表也称为“ B”,大约也有一个。 100K条记录,另一个称为“ C”,大约100条记录还有5张桌子。

我想放下所有桌子。但是,使用:

truncate table schema.A cascade
即使我已经从表中删除了所有行,

花费的时间也很长(超过10分钟)(是的,我知道truncate旨在执行该精确操作)。这是我不明白的第一点:为什么执行此操作会花费很长时间?

第二,我尝试了:

drop table schema.A;  

(使用GUI图形化Postico,而不是直接输入SQL命令)

该操作还会持续运行10分钟以上。

这里的外键关系是关键阻止者吗?

如果我想“快速核对”模式,并从头开始(我的所有表模式都在SQLAlchemy文件中定义,那么重新创建就很简单了),我是否必须使用管理员权限删除整个模式,还是可以以没有管理员权限的用户身份进行操作?

1 个答案:

答案 0 :(得分:1)

如果要删除架构:

DROP SCHEMA schema_name CASCADE

对于默认架构:

DROP SCHEMA public CASCADE

要快速重置单个架构数据库:

DROP SCHEMA public CASCADE;
CREATE SCHEMA public;