在我们的应用程序中,我们有5个表,使用ContentProvider从REST服务更新。
- 照片
- 的状态
- 的喜欢
- 的评论
- 的用户
我们将ContentProvider用于所有与数据库相关的调用,并且我们希望使用ListView实现像Activity这样的Feed,该ListView具有扩展CursorAdapter的适配器。
我们的Feed应该显示照片或状态,其中每个照片/状态项都必须显示:
我们正考虑使用View
实现它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查询Cursor
答案 0 :(得分:1)
性能方面还应考虑到您要进行的时间频率生成(然后重新生成该视图),即用户是否可以使用“拉动刷新”以便查看“新闻源”中的新项目?
假设没有索引视图(通过您发布的查询),并且因为视图基本上是虚拟表
生成视图将像宏一样扩展,并且应该生成相同的计划。
这基本上意味着创建的视图不会添加任何值,除非它被重用。
但就性能而言,您可以最终加入视图加入查看加入视图,当扩展时,提供比预期更复杂的计划。