2015-04-05 75 views
0

我有一個sqlite數據庫,用於保存從互聯網緩存的一些地圖數據。 我選擇sqlite,因爲它的便攜式無服務器。 對於每個地圖瓦片,它包含以下信息:如何提高SQLite數據庫的搜索效率?

x, y, zoom, type, image 

所以我的表中有他們的5列。 我使用呼叫

SELECT image WHERE x = ... AND y=... AND zoom=... AND type =... 

然而,隨着數據庫變大(大於15000場的行),該查詢速度變爲(平均>1秒)非常緩慢。

我怎樣才能讓它更快?

回答

1

您想使用索引來提高性能。對於這種情況:

WHERE x = ... AND y=... AND zoom=... AND type =... 

最好的索引是table(x, y, zoom, type)。由於條件都是平等條件,因此索引中列的順序無關緊要。

+0

嗨,我對你的友善建議的理解是: (1)創建兩個表(id,x,y,zoom,type)和(id_2,image) (2)select id where x = ... and y = ...和zoom = ...和type = ... (3)select image id_2 = id。 我的理解正確,對不起,我是數據庫新手。 – Nyaruko 2015-04-05 14:38:19

+2

@Nyaruko No.在表'image'上的列'x','y','zoom'和'type'上創建索引(使用[CREATE INDEX](http://sqlite.org/lang_createindex.html))。 。 – 2015-04-05 15:44:02