MySQL :(全文/索引)搜索"一字列"

Chr*_*ris 6 mysql full-text-search wildcard sql-like

我有一个表(MySQL 5.1,InnoDB),大约有3M行,其中98%只包含一个单词.如果我正在使用查询LIKE %searchterm%,那就太慢了.

由于SELECT只有这个表的查询,我正在考虑将其转换为MyISAM(因为InnoDB还没有,或者只支持5.6+版本,支持FULLTEXT).

但是,我想知道这是否会真正加快查询速度,因为据我所知,FULLTEXT索引是一个包含分词的表("Hello sunny day" - >"hello","sunny","一天"),所以如果每列只有一个单词,那会有意义吗?

如果我在这个文本列上放一个普通的索引,它会加快查询吗?

预先感谢您的帮助!

Mar*_*ers 4

使用全文索引会有所帮助。它将文本分割成单词,然后也为这些单词建立索引。正是这种索引加快了查询速度。但是您需要使用全文搜索功能,而不是 LIKE 来利用索引。

普通的索引对你没有帮助。LIKE 子句只能利用具有常量前缀的索引。

  • yourcolumn LIKE 'searchterm%'会使用索引。
  • yourcolumn LIKE '%searchterm%'不会使用索引。