【问题标题】:Matching prefixes for list of words with mysql DB使用 mysql DB 匹配单词列表的前缀
【发布时间】:2013-04-17 02:20:06
【问题描述】:

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

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

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

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

【问题讨论】:

    标签: php mysql wildcard string-matching


    【解决方案1】:

    假设您在列表中有一个索引。否则,like 的性能不应比前缀匹配与非前缀匹配慢 100 倍。是的,有点慢。但大部分工作应该是从页面中读取数据。

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

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

    【讨论】:

    • 你说得对,我正在使用索引。而且您的解决方案再次正确。我会在 9 分钟内接受你的回答 :)
    猜你喜欢
    • 1970-01-01
    • 2013-08-26
    • 1970-01-01
    • 2014-10-21
    • 2019-01-11
    • 1970-01-01
    • 1970-01-01
    • 2012-02-21
    相关资源
    最近更新 更多