2010-01-24 63 views
3

可能重复:
How to empty a SQL database?PostgreSQL的:清除所有表

什么是删除从数据库中的所有表中的所有记录,假如他们没有太多数据的最快方法(可能是在一些表中有几条记录,但没有更多)?

我相信从结构转储重建数据库是更长的变体。

+1

为什么要从结构转储中恢复“更长的变体”?什么意思? – 2010-01-24 12:38:36

回答

5

TRUNCATE表1,名称2,... CASCADE

TRUNCATE快速地从一组表中删除所有行。它与每个表上的非限定DELETE具有相同的效果,但由于它实际上并不扫描表,所以速度更快。这在大型表格上最有用。

如果您有很多表可能需要查询表的列表并动态构造截断查询,但对于少数表可以只需手动输入名称。

有关选择所有表并动态运行查询的信息,请参见this post。给出的例子是grantall,但这个想法是相同的。

+0

当心DELETE可能比TRUNCATE更快。请参阅http://stackoverflow.com/questions/11419536/postgresql-truncation-speed – 2013-11-15 14:16:43