Java 在读取(添加要删除的每个语句)并在末尾执行批删除或执行单个删除时,删除是好的吗?

Java 在读取(添加要删除的每个语句)并在末尾执行批删除或执行单个删除时,删除是好的吗?,java,sql,oracle,Java,Sql,Oracle,存档和删除过程。推荐哪一种 当窗口对除此之外的任何无关事务关闭时,此进程将在一天结束时运行,以禁止对以下tx的干扰 一、批量删除 object = read() while ( hasNext() ) { object = next(); call the archive_process to archive the object. add to delete. } batch_delete. 二,。单删除语句 object = read() while ( hasNext

存档和删除过程。推荐哪一种

当窗口对除此之外的任何无关事务关闭时,此进程将在一天结束时运行,以禁止对以下tx的干扰

一、批量删除

object = read()

while ( hasNext() ) 
{
  object = next();
  call the archive_process to archive the object.
  add to delete.
}

batch_delete.
二,。单删除语句

object = read()

while ( hasNext() ) 
{
  object = next();
  call the archive_process to archive the object.
}

use the same sql as above, but instead delete in a single statement.

推荐哪一种?

这取决于您的具体需求:

  • 如果您的代码要求删除每条记录,以便它可以执行其他任务,则可能需要在每个循环中一次删除一行
  • 如果您的代码可以独立于记录是否被删除而执行其任务,那么在最后(在单个批中)删除所有内容会更好

您需要记住,每次
delete
都会触发对数据的操作,并且可能会影响程序的磁盘读写速度。与许多单行删除操作相比,单批删除可能会对代码的速度产生积极影响。

除了其他答案之外,还要检查您是否有足够的撤消来支持delete命令。而且,随着卷的增大,DELETE可能会变得非常慢-检查是否存在替代方案。还要注意许多索引的影响

这要看情况而定。我更喜欢在指定要删除的所有数据时使用单个delete。@LuiggiMendoza是的,这就是我想做的(使用单个delete语句),但是,我只是想检查一下。谢谢如果另一个事务在您进行存档时添加了满足读取查询的新项,则第二个解决方案将在不存档的情况下删除该项。请记住,这将取决于不同的情况,请注意JBNizet的注释。@JBNizet当窗口关闭时,除此之外的任何无关事务都会在一天结束时运行此过程。我应该在我的问题中这样说。谢谢