使用LIKE /通配符进行SQL查询,优化

时间:2013-12-05 10:23:51

标签: sql performance ms-access

我在数据库中有以下字符串:

"[] some text [] 15" (other strings: "sometext15", "text", "[] [] another text []", "something else []"). 

括号是占位符。当我搜索字符串时,我不知道我应该在哪个位置或多少括号。我只知道,它们出现在单词之前/之后,用空格分隔。

因此,我希望使用以下搜索字词来查找此字符串:

"some text 15" 

"some text [] 15" 

"[] some text 15"

目前我的方法相当缓慢。我删除了搜索字符串中的所有括号,并将所有空格替换为“”。

所以我的搜索查询如下所示:

SELECT ... 
FROM ... 
WHERE X LIKE '%some%text%15%'

从答案中我必须过滤出不合适的答案,例如“ sometext15 ”。

这很有效,但速度很慢。我必须提出很多疑问,所以速度至关重要。

对于针对此问题的优化/更好的查询或解决方案,您有什么想法吗?是否有更具体的查询?

谢谢!

标记

1 个答案:

答案 0 :(得分:0)

我有以下建议: 创建一个包含ID和单词列的Lookup_table。然后在您的情况下将所需的所有表达式插入到该表中:

 insert into Lookup_table (id, words) values
 (1, 'some text 15'),
 (2, 'some text [] 15'), 
 (3,'some text 15')

完成后,执行以下查询:

 select * from YourTableName
 where YourColumnName in (select Words from lookup_table)

由于Ms-Access不支持Contains函数,我觉得使用查找表会使它更快,因为它已被索引。