MySQL全文搜索:为什么MATCH AGAINST不使用表索引

问题描述 投票:1回答:1

我正在尝试MySQL全文搜索,遇到了一些我无法理解的事情。

[编写标准查询以查找具有特定语言的文章时文章的内容中有一个给定的词(例如Trump),我会写类似:

SELECT * 
FROM (select * from article WHERE language_id = 2) AS A 
WHERE content like '%Trump%';

这里MySQL利用language_id上的索引来缩小它下来,然后通过内部选择并执行LIKE子句

这非常快,因为只有〜400篇文章(900K之内)的language_id为2。

但是,当我尝试对MATCH AGAINST子句执行相同操作时,它的运行速度要慢得多:

SELECT *
from (select * from article  WHERE language_id = 2) as A
where MATCH(content) AGAINST ('Trump');

为什么?在进行全文搜索时,MySQL是否不使用language_id上​​的索引?如果我只想在具有language_id = 2的数据库子集中进行搜索,有什么方法可以加快查询速度?

mysql full-text-search
1个回答
0
投票

我不知道为什么会这样,但是您是否尝试使用join而不是内部选择?这有什么区别吗?

© www.soinside.com 2019 - 2024. All rights reserved.