【问题标题】:speedup my search query in android sqlite?加快我在 android sqlite 中的搜索查询?
【发布时间】: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

标签: android sqlite search


【解决方案1】:

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

如果您没有重复的产品 ID,请删除 DISTINCT(这需要在应用 LIMIT 之前读取所有行)。

【讨论】:

  • 感谢您的回答,我删除了 DISTINCT 但速度还很慢。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2012-05-01
  • 2020-02-22
  • 1970-01-01
  • 1970-01-01
  • 2013-08-26
相关资源
最近更新 更多