Android性能:平面文件 vs SQLite

26

在stackoverflow上有几个与此话题相关的问题,但我没有得到合适的答案。我对平面文件的性能有一些疑问,使用平面文件是否比使用SQLite更好? 有人有性能统计数据吗?或者有适当的方式在Android中编写平面文件的示例。


1
你不应该在数据模型中描述关系吗?这非常依赖于它。而且不要试图重新编码SQLite,它已经足够快了。 - shkschneider
1
可能是使用SQLite而不是文件的优势是什么?的重复问题。 - iammilind
3个回答

32

除了性能方面的好处,以下是使用SQLite而不是平面文件的简单优点清单:

  • 您可以按需查询项目--不需要加载所有项目并选择所需的项目。
  • 删除记录是一个更加轻松的过程。不需要将整个文件重写到别处。
  • 更新记录就像删除或创建一条记录那样容易。
  • 您是否曾经尝试在平面文件上进行交叉引用查找?不值得。

总之,这是数据库相对于文本文件的每一个优势。


1
谢谢,这真的很有帮助。那关于大小方面的比较呢? - Nimit

11

这取决于您的需求。

如果您的存储数据大小为结构庞大,则建议使用SQLite。另一方面,如果数据大小只有单个或几行,则平面文件是最佳选择。

它们之间的区别在于,SQLite以结构化格式存储数据,因此在多组记录中查找记录将更容易,而这在平面文件的情况下是非常繁琐的。

但是,如果您要存储blob类型的数据,则建议同时使用SQLite和文件系统。即,将图像/声音/视频数据存储为文件格式,并将其路径存储在SQLite中。

还可以访问这个性能访问页面


1
你是指在Android中进行文本文件的读写和SQLite操作吗? - Lucifer
1
Nimit,如果你真的想学习编程,那就开始探索吧。 - Lucifer
2
路西法,我知道如何编写这些代码,我的担心与性能有关。无论如何,谢谢...! - Nimit
2
很高兴听到这个好消息:),我只是希望你自己学习,没有别的。 - Lucifer

1

在性能方面,SQLite绝对比其他方式更好,特别是当数据量增加时,这一点变得更加重要。

我一直在开发一个Flutter应用程序,在其中需要基于用户输入的文本动态显示筛选后的项目列表。最初,我使用JSON文件存储数据,并将相关值读取并存储到列表中,然后在用户输入时对该列表进行筛选。

这对几个项目来说完全没有问题,因此我认为自己做得很好,直到我使用包含超过150,000个项目的真实数据集进行测试。尝试在用户输入时筛选如此大的列表会导致应用程序崩溃。我转向了数据库解决方案,所有问题都得到了解决。即时过滤,再也没有奔溃了。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接