SQLite与内存

时间:2011-05-24 13:21:52

标签: iphone sqlite memory performance

我的应用有这种情况。

假设我有6个用户,每个用户最多可以有9个分数条目(即下午8:00得分1000分,黄金收集3分,银4等),说每个阶段得分和9个阶段。

所有这些分数都来自API调用,因此它可以以3 +分钟的间隔进行更新。

  • 我需要对此数据执行的操作是
    • 从第4阶段找到最接近的最小,最大记录。
    • 以及其他一些操作,例如添加或减去两个分数等

所有这6个用户及其得分记录已经在数据库中,在API调用后需要更新。

现在我的问题是:

对于这类数据(这里的分数数据)来说,这是更好的方法来保存NSArray或NSDictionary中内存中所有6个用户的所有数据,并通过min-max算法找到该数组中的min和max

OR

应该通过“WHERE score< = 200”和“WHERE score> = 200”之类的查询从数据库中获取,简而言之,2个数据库查询每个都返回最近的最小和最大记录,而不是保留所有内存中的数据。

我们关注的是速度和内存使用。重点是,数据库调用是否能够快速有效地查找最小值和最大值,或者搜索来自数据库的所有记录的数组中的最小值,最大值。 所有记录可以是6个用户*每个等级为9分= 54。 记录的更新时间可以是3分钟以上。 找到某些值的最大最大值的频率很高。

如果需要更多详细信息,请询问。 提前谢谢。

1 个答案:

答案 0 :(得分:1)

您正在使用我认为不值得担心的少量数据。无论哪种方法都能使您的开发过程变得最简单!

修改

如果我有大量数据(数百名竞争对手),我会使用SQLite。您可以执行以下查询:

SELECT MIN(`score`) FROM `T_SCORE` WHERE `stage` = '4';

这样你可以让数据库处理为你做计算,所以你永远不必获取所有结果。

我的SQL-fu并不是最棒的,但我认为你也可以这样做:

SELECT `stage`, MIN(`score`) AS min, MAX(`score`) AS max FROM `T_SCORE` GROUP BY `stage`

这将在一个查询中完成所有计算。