2013-04-23 57 views
0

我的目标是避免尝试匹配通配符的查询,因为它比查找匹配带有通配符的前缀的查询要慢100倍。用mysql匹配单词列表的前缀

对于一个单词它不是一个问题,但是如果我有用逗号分隔的单词列表呢?

是否有任何有效的方法来匹配这些单词的前缀(跟随通配符),而不是仅通配符?

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

回答

2

推定是你在列表上有一个索引。否则,like的性能不应比使用前缀匹配与非前缀匹配慢100倍。是的,有点慢。但大部分的努力应该是从网页上读取数据。

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

将数据正确归一化后,可以针对查询使用适当的关系构造,并免除使用like来连接表或查找元素。

+0

你说得对,我正在使用索引。而且你的解决方案再次合适。我会在9分钟内接受你的回答:) – 2013-04-23 18:37:08