我的应用有这种情况。
假设我有6个用户,每个用户最多可以有9个分数条目(即下午8:00得分1000分,黄金收集3分,银4等),说每个阶段得分和9个阶段。
所有这些分数都来自API调用,因此它可以以3 +分钟的间隔进行更新。
所有这6个用户及其得分记录已经在数据库中,在API调用后需要更新。
现在我的问题是:
对于这类数据(这里的分数数据)来说,这是更好的方法来保存NSArray或NSDictionary中内存中所有6个用户的所有数据,并通过min-max算法找到该数组中的min和max
OR
应该通过“WHERE score< = 200”和“WHERE score> = 200”之类的查询从数据库中获取,简而言之,2个数据库查询每个都返回最近的最小和最大记录,而不是保留所有内存中的数据。
我们关注的是速度和内存使用。重点是,数据库调用是否能够快速有效地查找最小值和最大值,或者搜索来自数据库的所有记录的数组中的最小值,最大值。 所有记录可以是6个用户*每个等级为9分= 54。 记录的更新时间可以是3分钟以上。 找到某些值的最大最大值的频率很高。
如果需要更多详细信息,请询问。 提前谢谢。
答案 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`
这将在一个查询中完成所有计算。