优化SQLite多个LIKE搜索iOS

时间:2011-06-09 03:01:48

标签: ios regex sqlite sql-like

我正在iPhone应用程序中执行带有多个LIKE子句的SQLite select语句。这些陈述类似于以下内容:

SELECT * FROM mytable 
WHERE name LIKE 'Smith %' 
OR name LIKE '% Smith %' 
OR name LIKE 'Smith_%' 
OR name LIKE '% Smith_%';

我的笔记本电脑上的执行时间约为0.5秒,设备上的时间约为2秒。由于空间限制,我无法索引“mytable”的“name”列。

每个LIKE条款都非常相似 - 如果一个失败,那么它们很可能都会出现。因此,我想将这些内容组合在一起,了解如何优化搜索。

这可以通过REGEXP来完成吗?如果是这样,默认情况下如何启用REGEXP?

编辑。我正在尝试按照以下方式发表声明:

SELECT * FROM mytable WHERE name REGEXP '[ _]?Smith[ _,]';

1 个答案:

答案 0 :(得分:4)

SQLite实际上内置了全文搜索引擎。您可能需要考虑使用它。

http://www.sqlite.org/fts3.html#section_1