【问题标题】:Why mysql fulltext search not run as expected?为什么mysql全文搜索没有按预期运行?
【发布时间】:2021-06-01 08:28:18
【问题描述】:

我有一个有 700, 000 行的表。一列称为“数据”是文本类型。我在此列上添加全文索引以提高查询速度。

这里有两个查询,第二个没有按预期返回。

您可以看到第一个查询返回一个带有我指定的关键字的结果。 花了 2 秒

我认为第二个查询应该运行得更快,因为我提供了更多过滤条件。但这需要大约一分钟。

提供更多条件应该缩小要搜索的数据集,为什么会变慢?

MYSQL 版本是 8.0.16 引擎是 InnoDB。对不起马赛克

【问题讨论】:

  • 查询返回您所要求的内容。不是你想要的。您需要文字而不是全文匹配,因此要搜索的子字符串必须用双引号字符括起来。测试+"i-uf16..."
  • 嗨@Akina 谢谢。我按照你说的方法做了,运行正常,但是速度很慢。因为更多的条件意味着更小的搜索范围,所以它不是更快吗?我修改了问题。能帮忙再查一下吗?

标签: mysql full-text-search full-text-indexing


【解决方案1】:

提供更多条件应该缩小要搜索的数据集,为什么会变慢?

FULLTEXT 将搜索每个所需的字符串,获取行号列表(或等效的)。

对于多个必需的字符串,它将获取多个列表并将它们“与”在一起。

此外,当两个字符串(“26228”和“31500733”在引号中一起出现时,需要验证它们的邻接关系。 可能是慢的部分。

考虑一下这个

MATCH AGAINST(+uf8... +26228 +31500733 IN BOOLEAN MODE)

这不会测试邻接,但这可能对最终结果无关紧要。 (另请注意,我跳过了太短的“i”。)

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2010-09-27
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-11-01
    • 2017-12-18
    相关资源
    最近更新 更多