2014-12-03 2 views
0

Я создаю программу, которая ищет между 20000 записей. я реализую этот поиск вускорить мой поисковый запрос в android sqlite?

edit.addTextChangedListener(new TextWatcher() {...} 

Когда пользователь вводит поисковый запрос характер execute.but очень медленный обратный ответ.

это моя запись таблицы:

id, prodname, proddet, prodid, refid 

и это мой поисковый запрос:

SELECT DISTINCT prodname , prodid FROM tblProd where ((prodname like '%"+name+"%') or (proddet like '%"+name+"%') and (prodname IS NOT NULL)) LIMIT 20; 

Кроме того, моя таблица FTS3 и использовать этот запрос для поиска:

SELECT DISTINCT prodname , prodid FROM tblProd where (tblProd MATCH '"+name+"*') LIMIT 20 

но скорость медленная, как и в другой таблице.

любой может помочь мне ускорить этот поиск без промедления. и извините за мой плохой английский.

+0

вы используете запрос 'like '% ...%''. вы не можете использовать индексы с ними, поэтому без коренного изменения вашей поисковой системы вы можете очень немного сделать, чтобы ускорить процесс. например измените на [полный текст] (http://www.sqlite.org/fts3.html#section_3) поиск вместо этого. –

+0

Я не могу изменить свою поисковую систему, моя таблица Модуль fts3 –

ответ

0

В таблицах FTS единственным эффективным поиском является MATCH.

Если у вас нет повторяющихся идентификаторов продуктов, удалите DISTINCT (для чего требуется чтение всех строк перед применением LIMIT).

+0

спасибо за ваш ответ, я удаляю DISTINCT, но скорость пока еще медленная. –

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