2015-04-05 5 views
0

У меня есть база данных sqlite для сохранения некоторых данных карты, кэшированных из Интернета. Я выбираю sqlite, потому что это портативный и serverless. Для каждой карты плитки, она содержит следующую информацию:Как повысить эффективность поиска базы данных 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) выбрать id, где x = ... и y = ... и zoom = ... и type = ... (3) выберите изображение, где id_2 = id. Я понимаю это правильно, жаль, что я новичок в базе данных. – Nyaruko

+2

@Nyaruko No. Создайте индекс (используя [CREATE INDEX] (http://sqlite.org/lang_createindex.html)) в таблице 'image' над столбцами' x', 'y',' zoom' и 'type' , –

Смежные вопросы