首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >批量删除

批量删除
EN

Stack Overflow用户
提问于 2009-11-20 06:30:23
回答 2查看 2.2K关注 0票数 1

我有一个超过1400万行的数据库表。

如果我尝试执行以下操作:

代码语言:javascript
复制
 delete from table

连接挂起。

如何删除“批”中的所有行,使它们最终被删除?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2009-11-20 06:34:24

尝试一下:

代码语言:javascript
复制
truncate table tblname

这样做的优点是不能回滚,因此不必记录其操作,也不会触发触发器。这使得它比同等的delete from tblname快得多。

否则,您可以根据表数据计算出要删除的子集。例如,如果有一个包含姓氏的字段(最好是已索引的):

代码语言:javascript
复制
delete from tblname where lastname like 'A%'

请注意,这只是一个示例。您还可以使用以下内容

平衡工资(<20K,20K-40K,40K-60K,...).

  • SSN.

  • current

诸若此类。您选择的内容完全取决于您要删除的表。

我自己更喜欢truncate命令,因为它很简单。

票数 2
EN

Stack Overflow用户

发布于 2009-11-20 06:38:43

删除是记录的操作,可以回滚,因此它们可能相当慢。如果您可以使用truncate或drop并重新创建表,那么这是您最好的选择。或者,您可以使用execute this sql

代码语言:javascript
复制
BEGIN
loop 
  delete from table where rownum < 500
  exit when SQL%rowcount < 499
end loop;
END
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/1767040

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档