我正在开发 Android map 应用程序。
我正在使用 MBTiles 来存储我的图 block 以供离线查看。一切都很好,但随着数据库规模的增长,性能会大大降低。 block 的大小各不相同,但通常大小约为 6 kb,并存储为 blob。我已经复制了 Mapbox 和其他人使用的模式以及索引和所有内容。该数据库目前大小约为 40 MB,读取大约需要 5 秒。到目前为止,我已经做了相当多的研究,除了它应该有效之外什么也没发现。参见 this SQLite page .
我做错了什么?这是 Android 的限制吗?
最佳答案
找到了!表索引从未得到应用。通过 execSql 发送的 CREATE SQL 包含两个用分号分隔的语句;一个创建表,另一个创建关联索引。显然,实际上只有第一个 (CREATE TABLE) 语句被执行,因此第二个 (CREATE INDEX) 语句从未被执行。我能够通过在 adb shell 中使用 sqlite3 util 找到它。运行 .indices map 没有返回任何东西。在更改 CREATE 脚本以实际创建索引之后 VOILA! super 快速的查询!
关于android - MBTiles 性能,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/16206439/