在websql中使用LIKE查询的最佳方法。

时间:2013-12-02 11:23:21

标签: sql web-sql

我有2个表是old_test和new_test / bible数据库/

old_test table has 7959 rows

new_test table has 23145 rows

我想使用LIKE查询从两个表中搜索verse。

例如:

SELECT * 
  FROM old_test 
 where text like "%'+searchword+'%" 
union all 
SELECT * 
  FROM new_test 
 where text like "%'+searchword+'%"

它运作良好,但需要花费大量时间来显示结果。

在上述条件下搜索速度更快的最佳解决方案是什么?

由于

2 个答案:

答案 0 :(得分:1)

您的查询%searchword%导致表扫描,随着记录数量的增加,它会变慢。使用searchword%查询获取索引库快速查询。

您需要的是全文搜索,这在websql中不可用。

我建议使用我自己的开源库https://github.com/yathit/ydn-db-fulltext来实现全文搜索。它也适用于较新的IndexedDB API。

答案 1 :(得分:0)

您的查询的主要问题是您必须逐段搜索整个字段以使用like查找字符串 - 构建可以查询的索引,而不是应该缓解问题。

查看Web SQL,它使用SQLite引擎:

  

用户代理必须实现Sqlite 3.6.19支持的SQL方言。

http://www.w3.org/TR/webdatabase/#parsing-and-processing-sql-statements

基于此,我建议尝试在表格上构建全文索引,以便快速运行这些搜索http://www.sqlite.org/fts3.html