gpt4 book ai didi

mysql - MySQL bool 搜索中关键字的排序规则是什么?

转载 作者:可可西里 更新时间:2023-11-01 06:52:04 25 4
gpt4 key购买 nike

当我在 bool 搜索中更改关键字的顺序时,我得到了相同的结果,但性能结果却大不相同。

在 MySQL 5.6.33 上使用 MyISAM 表进行分析,ft_min_word_len=2description_index 作为 title 上的 FULLTEXT 索引description 返回这个:

# Query 1
SELECT id
FROM archive, topic
WHERE topic.type=0 AND archive.status=2
AND MATCH(title, description) AGAINST ('+house* +tz*' IN BOOLEAN MODE)
AND archive.topicId = topic.id
ORDER BY archive.featured DESC, archive.submissionDate DESC LIMIT 0,20

结果:

Total count: 12
Key_read_requests: 2384607
Creating sort index: 7.950430 sec (!)
Duration: 8.851252 sec

# Query 2
SELECT id
FROM archive, topic
WHERE topic.type=0 AND archive.status=2
AND MATCH(title, description) AGAINST ('+tz* +house*' IN BOOLEAN MODE)
AND archive.topicId = topic.id
ORDER BY archive.featured DESC, archive.submissionDate DESC LIMIT 0,20

结果:

Total count: 12
Key_read_requests: 415
Creating sort index: 0.003449
Duration: 0.004054 sec

每个关键字的总记录数:

tz*: 135092
tz: 25596
house*: 12

两个查询的解释相同:

id | select_type | Table   | Type     | Key               | Key len | Ref             | Rows | Extra
1 | SIMPLE | archive | fulltext | description_index | 0 | | 1 | Using where; Using filesort
1 | SIMPLE | topic | eq_ref | PRIMARY | 3 | archive.topicId | 1 | Using where

只有 Key_read_requestsCreating sort index 两个查询不同。

似乎是:

  1. 关键字顺序是一个关键的性能因素
  2. 关键词倒序使用
  3. 在最后使用最具辨别力的关键字可以提高效果。

问题:

  • 造成这种巨大性能差异的原因是什么?
  • 有哪些规则/最佳做法? (我在 mysql 的文档中找不到任何内容)。

最佳答案

OP评论后编辑:
解决此查询时,我不确定确切的查询计划。
有时一个操作比另一个操作更昂贵,因此首先执行不太昂贵的操作可以整理出许多行,然后不必经过更昂贵的操作,从而减少运行时间。
(在您的示例中,其中一个匹配操作可能比另一个更昂贵,后者通过更改要匹配的字符串的顺序来增加或减少运行时间)。

关于mysql - MySQL bool 搜索中关键字的排序规则是什么?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/41784437/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com