我有一个超过1400万行的数据库表。
如果我尝试执行以下操作:
delete from table连接挂起。
如何删除“批”中的所有行,使它们最终被删除?
发布于 2009-11-20 06:34:24
尝试一下:
truncate table tblname这样做的优点是不能回滚,因此不必记录其操作,也不会触发触发器。这使得它比同等的delete from tblname快得多。
否则,您可以根据表数据计算出要删除的子集。例如,如果有一个包含姓氏的字段(最好是已索引的):
delete from tblname where lastname like 'A%'请注意,这只是一个示例。您还可以使用以下内容
平衡工资(<20K,20K-40K,40K-60K,...).
诸若此类。您选择的内容完全取决于您要删除的表。
我自己更喜欢truncate命令,因为它很简单。
发布于 2009-11-20 06:38:43
删除是记录的操作,可以回滚,因此它们可能相当慢。如果您可以使用truncate或drop并重新创建表,那么这是您最好的选择。或者,您可以使用execute this sql。
BEGIN
loop
delete from table where rownum < 500
exit when SQL%rowcount < 499
end loop;
ENDhttps://stackoverflow.com/questions/1767040
复制相似问题