2014-12-03 61 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)搜索。 – 2014-12-03 14:32:33

+0

我不能改變我的搜索系統,我的表模塊是fts3 – 2014-12-03 14:34:17

回答

0

在FTS表中,唯一有效的搜索是MATCH。

如果您沒有重複的產品ID,請刪除DISTINCT(在應用LIMIT之前需要讀取所有行)。

+0

感謝您的答案,我刪除了DISTINCT,但速度還是很慢。 – 2014-12-04 18:36:36