2015-04-05 50 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