【问题标题】:Room: performance of insert(Object) vs insert(List<Object>)房间:插入(对象)与插入(列表<对象>)的性能
【发布时间】:2018-10-30 17:02:02
【问题描述】:

在循环中向数据库插入对象的性能是否低于插入列表?我花了很多时间在我的 DAO 中实现 insert(List) 方法,但似乎性能较差。

UPD。 我在列表中实现了更高效的打包,并且 insert(List)...get(List) 方法显示了超过 10 倍的性能提升。 我使用了 2-5 个对象的小列表,所以我看不到性能提升

【问题讨论】:

  • "我花了很多时间来实现 insert(List) 方法" 你做了什么?它不应该只是添加一个方法,该方法采用List&lt;&gt; 或您的实体数组到接口,例如developer.android.com/reference/android/arch/persistence/room/… 中的示例,或者最多具有@Transaction 注释的方法,例如developer.android.com/reference/android/arch/persistence/room/…
  • @zapl 我有 Comment 对象,其中包含 DBComment 实体、少数 DBUser 实体、父 Comment 对象等。相当复杂的递归结构。我必须插入每个子对象。使用 insert(List) 它比 insert(Obj) 更复杂
  • 我有点迷失在这里......你在实施什么?房间的重点是让它为您完成艰苦的工作。
  • @RaymondArteaga 对我来说辛勤的工作是数据库设计和查询 =)

标签: java android database android-room


【解决方案1】:

insert(List) 的性能会比 insert(Object) 更好。 当您从循环内部调用 insert(Object) 时,必须为每次插入启动一个新事务。另一方面,当您使用 insert(List) 时,room 会启动单个事务并使用该事务插入所有行。尝试导航到生成的代码并阅读实现。

【讨论】:

  • 我认为 Room 可以提供批量插入单个对象的服务。
  • @Transaction 怎么样?
猜你喜欢
  • 2023-03-08
  • 2015-07-13
  • 1970-01-01
  • 1970-01-01
  • 2016-01-29
  • 1970-01-01
  • 1970-01-01
  • 2016-01-26
  • 1970-01-01
相关资源
最近更新 更多