【发布时间】:2014-05-19 08:39:36
【问题描述】:
我正在开发一个需要元数据信息来填充一些数组的程序。假设我有“Countries”、“Districts”和一堆其他元数据之类的信息。该信息存储在 sqlite 数据库中。该程序有时需要加载所有国家并对其进行迭代以搜索一个。我的问题是:最好的方法是什么:在查询元数据后将元数据保存在一个数组中,或者每次我需要它们时我都应该查询数据库?
以下是一些更多信息,以便您评估性能: 元数据表(如国家):~10 我需要迭代元数据的估计时间:几个(~100) 数组包含 aprox。 5 个字段(原始类型)。
【问题讨论】:
-
如果之间的数据发生变化怎么办?如果您将数据保存在内存中(一种非常强调内存的方式),您总是会显示旧数据。
-
数据为元数据信息。这意味着它将从 web 服务加载并且永远不会更改,至少在程序运行时是这样
-
那么,您确定没有人在您的查询之间更改服务器上的数据吗?然后你可以将数据保存在内存中(或者最好将它们复制到本地数据库临时表中,这样你就可以一次又一次地查询它们)
-
为什么要将它们复制到本地数据库?数据已经存储在 sqlite 数据库中。它在用户第一次打开应用程序时填充。每次我想搜索一个国家/地区时我应该继续查询它还是应该将它保存到一个数组中并迭代它。查询操作比数组迭代压力大吗?
-
您说数据是从 WebService 获取的。所以不在本地数据库上。将数据保存在数组中会更快。但是内存效率低。您可能会遇到一些 OutOfMemory 异常。当应用程序处于后台时,Android 将擦除内存。所以,你不能指望它。
标签: android arrays performance sqlite