【问题标题】:retrieving data - SQLite query vs storing and retrieving data from memory检索数据 - SQLite 查询与从内存中存储和检索数据
【发布时间】:2012-07-27 08:10:31
【问题描述】:

我有以下电影 SQLite 数据库的数据结构(我会保持简单,真正的表有更多字段):

  • 类型 - (id , name)
  • 电影 - (id , GenreId , name , year)
  • 场景 - (id , movieId , name)

例如:

  • 类型 - (7,惊悚)
  • 电影 - (250 , 7 , 第六感 , 1999)
  • scenes - (15 , 250 , I see dead people)

我将数据存储在我的 Android 应用程序的 SQLite 数据库中。 我有一个数据管理器类,用于检索相关数据。

我需要能够做到以下几点:

  • 获取所有类型
  • 获取每个流派 ID 的所有电影(+ 根据不同字段排序的能力)
  • 根据电影 ID 获取特定的电影项目
  • 根据电影ID获取所有场景
  • ...

我想知道,在性能方面,处理这些数据的更好方法是什么:

  1. 每次需要获取数据时执行 SQLite 查询。
  2. 从 db 获取一次数据后,将其存储在数组列表中,从而将其保存在内存中,例如 - 流派的 ArrayList,其中 Genre 对象包含 Movie 对象的数组列表...
  3. 与选项 2 相同,但带有哈希映射。在那种情况下 - 在地图上循环时,有没有办法控制对象的顺序?
  4. 还有什么其他的选择吗?

【问题讨论】:

    标签: android database performance sqlite arraylist


    【解决方案1】:

    通常,您从数据库中检索数据并使用 CursorAdapter 在 ListView 中表示数据。所以,我想这是最有效的方法。如果您的表有不同的活动,在活动被销毁之前,它们会将您的数据存储在内存中。

    【讨论】:

    • 感谢您的评论:) ListView 在我的项目中并非总是如此。我希望有一种更通用的方式来获取该数据,以便它适合所有可能的场景
    • 在任何情况下,使用游标比使用 ArrayLists 更好,因为游标会更快。
    • 但是用于获取光标的 db 查询呢?将结果保存在内存中不是比每次需要数据时都执行查询更好吗?
    • 最好每次都使用查询而不是将结果保存在内存中
    猜你喜欢
    • 2011-12-30
    • 1970-01-01
    • 2016-10-10
    • 1970-01-01
    • 1970-01-01
    • 2013-06-28
    • 1970-01-01
    • 2013-09-04
    • 1970-01-01
    相关资源
    最近更新 更多