我正在了解自己的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文件中定义,那么重新创建就很简单了),我是否必须使用管理员权限删除整个模式,还是可以以没有管理员权限的用户身份进行操作?
答案 0 :(得分:1)
如果要删除架构:
DROP SCHEMA schema_name CASCADE
对于默认架构:
DROP SCHEMA public CASCADE
要快速重置单个架构数据库:
DROP SCHEMA public CASCADE;
CREATE SCHEMA public;