代码之家  ›  专栏  ›  技术社区  ›  glebm

快速查找“%term%”需要什么索引?

  •  2
  • glebm  · 技术社区  · 16 年前

    我正在使用MySQL。

    SELECT * from users WHERE user_name LIKE '%search_term%'
    

    我需要什么索引来快速查找?

    4 回复  |  直到 16 年前
        1
  •  2
  •   Jesse MacVicar    16 年前

    我们以前也运行过这类查询,但很快就意识到像MySQL这样的关系数据库不适合全文搜索。根据您所拥有的其他查找类型,您可能希望查看 Lucene Solr

    Lucene支持索引和搜索,完全独立于数据库。它的速度非常快,还支持拼写检查、词干分析、相关性和通配符搜索。

        2
  •  2
  •   HLGEM    16 年前

    如果出于某种原因,全文搜索不适合您(请先尝试,这是最好的解决方案),我遇到了这样一个问题:我首先搜索字符串,如“search\u term%”,它可以使用索引,然后只有在第一个没有返回任何记录的情况下才尝试较长的搜索。大多数人会使用搜索词的第一个字母进行搜索,他们可以得到更快的回报。在网站上告诉他们,使用搜索词的第一个字母将提高搜索性能。或者甚至把它作为一个要求,避免做“搜索这些随机输入的字母”的搜索。

        3
  •  2
  •   Martin Smith    14 年前

    你查过了吗 Full Text Search ?

        4
  •  0
  •   Sean    16 年前

    在字符串的两端都有一个通配符,没有索引会使它更快。它必须做一次全表扫描。但是,如果通配符字符串只是结尾,例如“term%”,则将使用索引。