mysql - alguma maneira de ajudar a pesquisa de texto completo com outro índice?
Digamos que eu tenha uma tabela "articles" que tenha as colunas:
article_text: fulltext indexed
author_id: indexed
Agora eu quero procurar por um termo que aparece em um artigo que um determinado arthor tenha escrito.
então algo como:
select * from articles
where author_id=54
and match (article_text) against ('foo');
A explicação para esta consulta me diz que o mysql só vai usar o índice de texto completo. Acredito que o mysql só pode usar 1 índice, mas com certeza parece uma idéia sábia para obter todos os artigos que um determinado autor escreveu primeiro antes de procurar o termo no texto completo ... então, existe alguma maneira de ajudar o mysql?
por exemplo .. se você fez uma auto-adesão?
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');
o explain para isso lista o uso do índice author_id primeiro, depois a pesquisa de texto completo.
Isso significa que, na verdade, só está fazendo a pesquisa de texto completo no conjunto limitado, conforme filtrado por author_id?
TERMO ADITIVO
Explique o plano para o self join da seguinte forma:
*************************** 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)