Я экспериментирую с MySQL полнотекстовым поиском и столкнулся с чем-то, что не могу понять.
При написании стандартного запроса для поиска статьи с определенным языком и данным словом (например, Трамп) в содержании статьи я бы написал что-то вроде:
SELECT *
FROM (select * from article WHERE language_id = 2) AS A
WHERE content like '%Trump%';
Здесь MySQL использует индекс на language_id
, чтобы сузить его, а затем проходит через внутреннее выделение и выполняет предложение LIKE
. Это происходит довольно быстро, поскольку есть только ~ 400 статей (из 900 КБ), которые имеют 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
?