我正在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[ _,]';