我目前正在学校的一个项目(Android应用程序),我们应该在本地SQLite数据库中存储有关用户费用和收入的信息,然后将其显示为各种图表等。
我的问题是;什么会更快?不断地对数据库进行查询以获取某些费用的信息,或者只是在启动时进行查询并将返回的值作为对象存储在列表中?
谢谢!
答案 0 :(得分:5)
一次从DB中提取每个条目然后将其保存到列表中直到使用它会更快。
除非您想在这些条目中搜索。如果您正在寻找看起来像“市场”的每个条目,我会在db中搜索并将结果放在列表中以显示它。
基本上,您要避免的是在恰好时间从数据库中检索每个条目,ListAdapter调用getView并且您需要新数据。
答案 1 :(得分:5)
这实际上取决于您需要执行的数据量和查询的复杂性。如果您正在处理数千个对象,并且需要遍历列表以检查每个对象的特定属性,那么使用数据库可能会更快。
答案 2 :(得分:3)
将它们存储为列表肯定会更快。这是一个细分
如果您加载数据并将其保存在列表中,您将始终可以访问它,因为它在内存中并且已经是您想要的格式。
如果您每次查询,则涉及三个步骤
1)从存储器(硬盘驱动器)读取数据
2)将其转换为您想要的对象
3)将数据存储在存储器(RAM)中
4)从存储器(RAM)读取数据
您看到的步骤太多,执行速度较慢
答案 3 :(得分:3)
访问数据库非常昂贵。因此,从数据库中获取所有数据是有意义的。如果数据已更改,请在onStop中更新数据库(这是清理工作的地方)。
答案 4 :(得分:2)
答案是;这取决于。如果列表中只有少量项目,那么在启动时拉它们几乎肯定会更快;但是,如果有数千个项目,它可能会使应用程序启动速度变慢(尽管访问单个项目当然会更快)。
我的建议是实际测试它,看看哪种方法最适合您拥有的数据集,并根据经验证据做出决定。
答案 5 :(得分:0)
如果您要遍历对象/数据,那么最好使用数据库进行查询。
否则,使用List使其更快,也更容易编码。