什么是更快 - 将数据存储在列表或数据库中? (机器人)

时间:2013-09-18 13:26:47

标签: java android performance sqlite

我目前正在学校的一个项目(Android应用程序),我们应该在本地SQLite数据库中存储有关用户费用和收入的信息,然后将其显示为各种图表等。

我的问题是;什么会更快?不断地对数据库进行查询以获取某些费用的信息,或者只是在启动时进行查询并将返回的值作为对象存储在列表中?

谢谢!

6 个答案:

答案 0 :(得分:5)

一次从DB中提取每个条目然后将其保存到列表中直到使用它会更快。

除非您想在这些条目中搜索。如果您正在寻找看起来像“市场”的每个条目,我会在db中搜索并将结果放在列表中以显示它。

基本上,您要避免的是在恰好时间从数据库中检索每个条目,ListAdapter调用getView并且您需要新数据。

答案 1 :(得分:5)

这实际上取决于您需要执行的数据量和查询的复杂性。如果您正在处理数千个对象,并且需要遍历列表以检查每个对象的特定属性,那么使用数据库可能会更快。

答案 2 :(得分:3)

将它们存储为列表肯定会更快。这是一个细分

如果您加载数据并将其保存在列表中,您将始终可以访问它,因为它在内存中并且已经是您想要的格式。

如果您每次查询,则涉及三个步骤 1)从存储器(硬盘驱动器)读取数据
2)将其转换为您想要的对象 3)将数据存储在存储器(RAM)中 4)从存储器(RAM)读取数据

您看到的步骤太多,执行速度较慢

答案 3 :(得分:3)

访问数据库非常昂贵。因此,从数据库中获取所有数据是有意义的。如果数据已更改,请在onStop中更新数据库(这是清理工作的地方)。

答案 4 :(得分:2)

答案是;这取决于。如果列表中只有少量项目,那么在启动时拉它们几乎肯定会更快;但是,如果有数千个项目,它可能会使应用程序启动速度变慢(尽管访问单个项目当然会更快)。

我的建议是实际测试它,看看哪种方法最适合您拥有的数据集,并根据经验证据做出决定。

答案 5 :(得分:0)

如果您要遍历对象/数据,那么最好使用数据库进行查询。

否则,使用List使其更快,也更容易编码。