MySql中的全文索引加速"包含"搜索

时间:2016-05-07 15:02:50

标签: mysql full-text-search

我遇到了问题,因为我有非常大的表,执行基于where like % Xlike '% X %的where子句的更新。我甚至达到了我认为"爆炸"将Name字段放入NameWord1,NameWord2中,这样我就可以构造出哪些更复杂的子句,但每个子句至少都是' =' vs'喜欢%'。

我注意到了全文索引,如果这些索引可能达到相同的结果,那么在文档中我并不清楚。我不喜欢全文索引数百万条记录表进行测试,我无法在一张小桌子上看到测试,这让我对性能提升有了真正的见解,所以我发布了我认为有点通用的内容这里有一个问题,就MySql Full-Text索引对我的问题的适用性提供一些反馈。

1 个答案:

答案 0 :(得分:0)

作为一般答案,“是”。您的用例是为全文索引设计的。

实施一件事时要记住两件事:

  • 最小字长。默认值为3或4,具体取决于存储引擎。如果你正在寻找一个角色,那么这显然太长了。 (见here。)
  • 停止单词列表。这些是不在索引中的值,因为它们没有信息(“不过”)或太常见(“有”)。

此外,如果您的where子句包含其他条件,那么全文索引可能不会像原来那样有所改进。

最后一点。如果要编制索引的列实际上是代码的列表,则这些列应位于联结表中。虽然全文索引可以提供一个好处,但是具有适当索引的适当数据结构将具有更好的性能 - 并且您也可以保持关系完整性。