2009-07-24 5 views
0

В моем приложении я работаю с большой базой данных. В таблице содержится около 75000 записей (всего 6 таблиц). Я хочу получить данные из трех разных таблиц за раз. I завершил это. Но процесс поиска был медленным. Как я могу оптимизировать процесс поиска?Лучший способ поиска базы данных sqlite

+0

Я не думаю, что это хорошая идея хранить столько записей на телефоне. То, что я рекомендовал бы (и я делаю это для приложения, которое я пишу тоже), - это хранить записи на сервере где-то и запрашивать его через Интернет через SOAP/JSON/что угодно. – Nippysaurus

+0

Не могли бы вы показать нам запрос? –

+0

Если вы разместите свой запрос, кто-то, вероятно, попытается его оптимизировать. Для начала попробуйте создать индекс для некоторых столбцов. – cnu

ответ

0

Не имея возможности увидеть структуру таблицы (или запрос), первое, что я предлагаю, это добавить некоторые индексы к таблицам.

Допустим, у вас есть несколько таблиц, как:

Author 
    id 
    last_name 
    first_name 

Subject 
    id 
    name 

Book 
    id 
    title 
    author_id 
    subject_id 

и Вы желаете, чтобы получить всю информацию о каждой из книг, которые автор с last_name="Smith" и first_name="John" писал. Ваш запрос может выглядеть следующим образом:

SELECT * FROM Book b 
    LEFT JOIN Subject s 
     ON s.id=b.subject_id 
    LEFT JOIN Author a 
     ON a.id=b.author_id 
    WHERE a.last_name='Smith' 
     AND a.first_name='John'; 

Там вы хотите last_name столбец в таблице Author иметь индекс (и, возможно, first_name тоже).

1

Возможно, вам захочется использовать полнотекстовую поисковую систему и вместо этого выполнить запросы SELECT ... MATCH. Обратите внимание, что вам нужно включить механизм FTS (он по умолчанию отключен) и создавать виртуальные таблицы вместо обычных таблиц. Вы можете узнать больше об этом here.

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