2013-04-25 61 views
1

我正在開發Android地圖應用程序。
我正在使用MBTiles來存儲我的瓷磚以供離線查看。所有的工作都很棒,但隨着db的增長,性能會大大降低。瓷磚的大小各不相同,但通常大小約爲6 kb,並以斑點形式存儲。我複製了Mapbox和其他人使用的模式,索引和全部。該數據庫目前大小約爲40 MB,讀取時間約爲5秒。到目前爲止,我已經做了相當多的研究,除了應該起作用之外,沒有發現任何東西。見this SQLite page
我在做什麼錯?這是Android的限制嗎?MBTiles性能

+0

*什麼*讀取需要5秒?一塊瓷磚?所有瓷磚?你有什麼指數? – 2013-04-25 09:05:16

+0

從數據庫中檢索一個單獨的圖塊需要5秒鐘的時間。是索引已被添加。 – whyvez 2013-04-25 13:19:42

+0

從這裏複製創建腳本:https://github.com/mapbox/mbutil/blob/master/mbutil/util.py – whyvez 2013-04-25 13:38:58

回答

2

找到了!表格索引從未得到應用。通過execSql發送的CREATE SQL包含兩個由分號分隔的語句;一個用於創建表格,另一個用於創建關聯的索引。顯然只有第一個(CREATE TABLE)語句實際得到執行,所以第二個(CREATE INDEX)語句從未執行過。我可以通過在adb shell中使用sqlite3 util來找到這一點。運行.indices映射不會返回任何內容。改變CREATE腳本以實際創建索引VOILA!超級快速查詢!

+1

在Mapbox上的傢伙們有足夠的分享他們的MBTiles模式。 https://github.com/mapbox/node-mbtiles/blob/master/lib/schema.sql – whyvez 2013-04-25 17:57:06