我要开发一个类似电话簿的应用程序,它将在一百万条记录中查找指定姓名。我主要关心的问题之一是查找的性能。 所以我的问题是:
1- 在 android 中拥有 1M 记录的 SQLite 数据库是否可行?
2- 是否有已知的解决方案来加快数据库查询?
关于第二个问题,我想到了使用索引并将数据库分解为几个较小的数据库。 如果这不可行,是否有任何已知的方法来处理这个问题?
最佳答案
是的,您可以拥有一个包含 1M 记录的数据库。如果数据库没有预先填充,那么您可以按正常方式进行,但是如果您想使用预先填充的数据库,则不能依赖 Assets 原始文件夹,因为大小限制为 10mb,但您可以使用以下库,当您的应用程序首次启动时,它会从 assets 文件夹中复制数据库。 https://github.com/jgilfelt/android-sqlite-asset-helper
另一种解决方案是将您的数据放在服务器上,例如 amazon AWS 以进行快速数据处理,并从您的应用程序调用服务器(GET 请求)。
您可以非常轻松地测试所有内容。从此处获取包含 4M 行的示例 SQL 数据库:https://dev.mysql.com/doc/employee/en/employees-introduction.html .将数据转换为 sqlite 并使用 android-sqlite-asset-helper 在您的应用程序中使用它。
关于android:要在数据库中查找的 1M 记录,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37105888/