【发布时间】:2013-04-17 02:20:06
【问题描述】:
我的目标是避免尝试匹配通配符的查询,因为它比匹配前缀和后跟通配符的查询慢 X100 倍。
对于一个单词来说这不是问题,但是如果我有一个用逗号分隔的单词列表呢?
是否有任何有效的方法可以通过前缀(后跟通配符)而不是仅通过通配符来匹配这些单词?
我的意思是在这种情况下有什么办法可以避免像 %word% 这样的匹配模式?
【问题讨论】:
标签: php mysql wildcard string-matching
我的目标是避免尝试匹配通配符的查询,因为它比匹配前缀和后跟通配符的查询慢 X100 倍。
对于一个单词来说这不是问题,但是如果我有一个用逗号分隔的单词列表呢?
是否有任何有效的方法可以通过前缀(后跟通配符)而不是仅通过通配符来匹配这些单词?
我的意思是在这种情况下有什么办法可以避免像 %word% 这样的匹配模式?
【问题讨论】:
标签: php mysql wildcard string-matching
假设您在列表中有一个索引。否则,like 的性能不应比前缀匹配与非前缀匹配慢 100 倍。是的,有点慢。但大部分工作应该是从页面中读取数据。
如果您有一个用逗号分隔的单词列表,那么您的数据结构是错误的。您需要引入一个带有 id 和每个单词的新表。
一旦您对数据进行了适当的规范化,您就可以对查询使用适当的关系结构,而无需使用like 来连接表或查找元素。
【讨论】: