【问题标题】:Content Providers and Database Views内容提供者和数据库视图
【发布时间】:2014-09-21 13:28:34
【问题描述】:

在我们的应用中,我们有 5 个表,它们是使用 ContentProvider 从 REST 服务更新的。

-照片
-状态
-喜欢
-cmets
-用户

我们为所有与数据库相关的调用使用 ContentProvider,并且我们希望使用 ListView 实现类似 Activity 的提要,该 ListView 具有扩展 CursorAdapter 的适配器。

我们的提要应该显示照片或状态,而对于它必须显示的每张照片/状态项:

  • 项目的创建者用户名
  • 商品的点赞数
  • 物品的厘米数

我们正在考虑使用视图来实现它

CREATE VIEW event_feed AS 
select * from (
  select "Photo" as type, p.*, u.*, 
    (select count(*) from comments where subjectId = p.id) comment_count, 
    (select count(*) from likes where subjectId = p.id) like_count
  from photos p inner join users u on p.creatorId = u.id
  union
  select "Status" as type, s.*, u.*, 
    (select count(*) from comments where subjectId = s.id) comment_count, 
    (select count(*) from likes where subjectId = s.id) like_count
  from statuses s inner join users u on s.creatorId = u.id
  )
order by createdAt desc

创建后,我们将使用 ContentProvider 查询视图以获取光标

问题

  • 性能方面,有更好的方法吗?
  • CursorJoiner 会更好吗?

【问题讨论】:

    标签: android android-sqlite android-contentprovider android-cursoradapter


    【解决方案1】:

    性能方面还应考虑您要
    生成(然后重新生成该视图)的时间频率,即用户是否可以使用“拉动刷新”来
    查看新的“新闻源”上的项目?
    假设不是索引视图(通过您发布的查询)并且因为视图基本上是一个虚拟表
    比生成视图将像宏一样扩展,并且应该生成相同的计划。
    这基本上意味着创建的视图不会增加任何价值,除非它被重用。
    但就性能而言,您最终可能会使用视图连接以查看连接以查看,当
    展开时,会提供比预期复杂得多的计划。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2018-03-30
      • 1970-01-01
      相关资源
      最近更新 更多