删除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中的记录一个一个或一个列表更快的主要内容,如果未能解决你的问题,请参考以下文章

查看存储在 Mavericks 或 Yosemite 中的核心数据 [关闭]

每当从 sqlite 数据库中删除记录时,将活动导航到上一个并显示数据库中可用的记录

如何使用Android从sqlite中的表中删除所有记录?

更快地创建SQLITE查询

Android SQLite:哪个查询(“query”或“rawQuery”)更快?

在 SQLite + BEGIN TRANSACTION 中更新更快