删除sqlite中的记录一个一个或一个列表更快

Posted

技术标签:

【中文标题】删除sqlite中的记录一个一个或一个列表更快【英文标题】:deleting records in sqllite is faster one by one or as a list 【发布时间】:2021-10-05 02:56:39 【问题描述】:

哪个更快:

    一次删除一条记录

例如listOfObjects.forEach repository.delete(it.id)

这是查询

@Query("DELETE FROM myTable WHERE object_id=:id")
fun delete(objectId: Long)

2。在单个查询中删除整个列表

例如repository.delete(listOfObjectIds)

这是查询

@Query("DELETE FROM myTable WHERE object_id=:id in(:objectIds)")
fun delete(ObjectIds: List<Long>)

?

【问题讨论】:

【参考方案1】:

到目前为止,第二个列表版本将优于第一个版本,它为大小为 N 的列表发出 N 个删除语句。主要原因是第二个版本只需要往返 SQLite 数据库,而第一个版本需要 N 次。

此外,第二个版本还有一个额外的好处,即您的整个逻辑删除操作可以在单个事务中执行。默认情况下,第一个版本将跨多个事务执行。这可能会导致潜在的问题,例如,在批量单个删除操作的中途发生异常。

【讨论】:

以上是关于删除sqlite中的记录一个一个或一个列表更快的主要内容,如果未能解决你的问题,请参考以下文章