我有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+'%"
它运作良好,但需要花费大量时间来显示结果。
在上述条件下搜索速度更快的最佳解决方案是什么?
由于
答案 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