我有一个数据库表,其行> 1400万行。

如果我试图执行:

 delete from table

连接挂断。

如何在“批处理”中删除所有行,以最终被删除?

有帮助吗?

解决方案

试用:

truncate table tblname

这具有不可回滚的优势,因此不必记录其动作,也不要解开触发器。这使得它比等效的速度要快得多 delete from tblname.

否则,您可以根据表数据来删除子集。例如,如果有一个字段(希望索引)包含姓氏:

delete from tblname where lastname like 'A%'

请注意,这只是一个示例。您也可以使用诸如

  • 工资(<20k,20k-40k,40k-60k,...)。
  • SSN。
  • 当前平衡。

等等。您选择的内容完全取决于您要删除的表。

我更喜欢 truncate 由于其简单性而命令自己。

其他提示

删除 是记录的操作,可以向后滚动,因此它们可能会很慢。如果你可以的话 截短 或者放下并重新创建桌子,这是您最好的选择。或者,您可以 执行此SQL.

BEGIN
loop 
  delete from table where rownum < 500
  exit when SQL%rowcount < 499
end loop;
END
许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top