MySQL - любой способ помочь полнотекстовый поиск с другим индексом?
Допустим, у меня есть "статьи" таблица, в которой есть столбцы:
article_text: fulltext indexed
author_id: indexed
Теперь я хочу найти термин, который встречается в статье, написанной конкретным артистом.
так что-то вроде:
select * from articles
where author_id=54
and match (article_text) against ('foo');
объяснение этого запроса говорит мне, что mysql будет использовать только полнотекстовый индекс. Я полагаю, что mysql может использовать только 1 индекс, но это, кажется, мудрая идея - получить все статьи, которые конкретный автор написал в первую очередь, перед полнотекстовым поиском по термину ... Так есть ли способ помочь mysql?
например .. если вы сделали самостоятельное присоединение?
select articles.* from articles as acopy
join articles on acopy.author_id = articles.author_id
where
articles.author_id = 54
and match(article_text) against ('foo');
В объяснении для этого сначала указывается использование индекса author_id, а затем полнотекстовый поиск.
Означает ли это, что он выполняет только полнотекстовый поиск по ограниченному набору, отфильтрованному по author_id?
ADDENDUM
Объясните план самостоятельного объединения следующим образом:
*************************** 1. row ***************************
id: 1
select_type: SIMPLE
table: acopy
type: ref
possible_keys: index_articles_on_author_id
key: index_articles_on_author_id
key_len: 5
ref: const
rows: 20
filtered: 100.00
Extra: Using where; Using index
*************************** 2. row ***************************
id: 1
select_type: SIMPLE
table: articles
type: fulltext
possible_keys: index_articles_on_author_id,fulltext_articles
key: fulltext_articles
key_len: 0
ref:
rows: 1
filtered: 100.00
Extra: Using where
2 rows in set (0.00 sec)