删除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 数据库中删除记录时,将活动导航到上一个并显示数据库中可用的记录