【发布时间】:2014-12-03 14:30:48
【问题描述】:
我创建了一个搜索 20000 条记录的程序。 我在
中实现了这个搜索edit.addTextChangedListener(new TextWatcher() {...}
当用户输入字符搜索查询时执行。但返回答案很慢。
这是我的记录表:
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
但是速度和其他桌子一样慢。
任何人都可以帮助我如何加快搜索速度。 对不起我的英语不好。
【问题讨论】:
-
您正在使用
like '%...%'查询。您不能将索引与这些一起使用,因此如果不从根本上改变您的搜索系统,您几乎无法做任何事情来加快速度。例如改为full text搜索。 -
我无法更改搜索系统,我的表格模块是 fts3