使用mysql DB匹配单词列表的前缀

时间:2013-04-23 18:30:56

标签: php mysql wildcard string-matching

我的目标是避免尝试匹配通配符的查询,因为它比匹配带有通配符的前缀的查询慢X100倍。

对于单个单词,这不是问题,但如果我有逗号分隔的单词列表怎么办?

是否有任何有效的方法可以通过前缀(使用后面的通配符)匹配这些单词而不是通过通配符?

我的意思是在这种情况下有没有办法避免匹配像%word%这样的模式?

1 个答案:

答案 0 :(得分:2)

假设你在列表上有一个索引。否则,使用前缀匹配与非前缀匹配时,like的性能不应慢100倍。是的,有点慢。但大多数努力应该是从页面中读取数据。

如果你有一个用逗号分隔的单词列表,那么你的数据结构就错了。您需要引入一个带有id和每个单词的新表。

一旦正确地对数据进行了规范化,就可以为查询使用适当的关系结构,而不必使用like来连接表或查找元素。