0

在我們的應用程序中,我們有5個表,使用ContentProvider從REST服務更新。
內容提供者和數據庫視圖

- 照片
- 狀態
- 喜歡
- 評論
- 用戶

我們使用ContentProvider的爲我們所有的數據庫相關的電話,我們想要實現一個像Activity一樣的feed h具有擴展CursorAdapter的適配器的ListView。

我們的飼料應顯示無論是照片還是狀態,其中對於每一個照片/狀態的項目有顯示:

  • 項目的創建者的用戶名
  • 項目的喜好
  • 項目的數數評論

我們考慮使用視圖

實現它210
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會更好嗎?

回答

1

性能方面也應該考慮到的是你要
生成(然後regenarate該視圖)倍frquency IE瀏覽器的用戶可以使用「拉刷新」以
見新項目關於'新聞源'?
假設沒有索引視圖(通過您發佈的查詢),並且由於視圖基本上是虛擬表格
比生成視圖會像宏一樣展開並且應該生成相同的計劃。
這基本上意味着創建的視圖除非重用,否則不會添加任何值。
但是就性能而言,您最終可以加入查看加入,查看哪些是
擴展後的計劃,比預期的計劃複雜得多。