【发布时间】:2020-03-04 12:34:29
【问题描述】:
我正在尝试使用 MySQL 全文搜索,但遇到了一些我无法理解的问题。
在编写用于查找具有某种语言的文章的标准查询时 并且给定的词(例如特朗普)在文章的内容中我会写如下:
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 的数据库子集中搜索,有什么方法可以加快查询速度?
【问题讨论】: