什么更贵?常量数据库查询或首​​先将所有内容加载到对象数组中?

时间:2011-10-28 17:06:00

标签: android sql database arrays

我正在开发一个应用程序,它在启动时设置数据库游标以在列表视图中显示值。在应用程序运行期间,数据库中的数据会更新,我会不断更新光标。

它有点工作但有时光标落后于数据库更新,因此在列表中显示旧数据,直到几秒钟之后。

如果我在启动时将所有数据(大约10-20组,大约20个字符串和每个整数)加载到一个对象数组中,并且仅在关闭时写入数据库,会更有效吗?

数据库查询与创建对象数组的费用是多少?

感谢您的帮助!

2 个答案:

答案 0 :(得分:1)

除非您谈论大量数据(数百万行),否则在内存中创建对象以存储它们的成本(在CPU中)与执行数据库查询的时间相比将微不足道。

答案 1 :(得分:0)

这取决于你对“昂贵”的定义。如果您指的是带宽,则常量查询会更昂贵。对远程数据库的每个查询都发生在毫秒级,而对内存中对象的查询大约为纳秒级。

如果“昂贵”意味着立即处理速度可以降低网络延迟,那么将它们全部加载到内存中将会更加昂贵,因为系统会在行动时筛选更多信息。

在你的情况下,既然你正在处理android,我会说你最好的选择是两者的结合。您可能希望在任何给定时间加载尽可能多的数据。您可能希望查看可能为数据创建邻接列表,如果这有助于数据检索。通过良好的邻接列表系统,您可以在处理现有数据时查询即将需要的数据(这有助于减少网络延迟的影响)。

对于更新部分,除非您要对更改进行排队并异步上传,否则您无法真正避免这种延迟。这就是网络的运作方式。但是,如果您可以与接口异步工作,则可以对更改进行排队,并指示在用户继续执行下一个任务时,在数据库级别进行物理更新。