我们需要在删除之前截断一个大表吗?

Sav*_*tha 3 oracle

据说我们应该在删除之前截断一个大表,它会提高性能.这是真的吗?

Vin*_*rat 10

IMO一般来说,如果你只是想放一张桌子那么DROP是合适的.它会以同样的方式释放空间TRUNCATE,它将具有原子的优势(没有查询将有机会看到表"空").

从10g +开始,删除的表不会立即删除:如果有足够的空间,它将被放入回收站.如果先截断表,则回收站中不会保留任何数据.这可能就是为什么你被告知先截断(?).

在任何情况下,如果您想绕过回收站,您可以发出DROP TABLE your_table PURGE此语句将是原子的.


Jas*_*son 1

这完全取决于您是否希望在出现问题时能够回滚。

数据删除会在数据库的事务日志中记录删除操作,直到您提交更改为止。

截断会从表中删除所有数据,而不记录这些日志,因此这样做可以显着提高性能。只要确保你知道自己在做什么,因为没有回头路。