mysql: ¿alguna forma de ayudar a la búsqueda de texto completo con otro índice?
Digamos que tengo una tabla de "artículos" que tiene las columnas:
article_text: fulltext indexed
author_id: indexed
ahora quiero buscar un término que aparece en un artículo que ha escrito un artículo en particular.
así que algo como:
select * from articles
where author_id=54
and match (article_text) against ('foo');
La explicación para esta consulta me dice que mysql solo va a utilizar el índice de texto completo. Creo que mysql solo puede usar 1 índice, pero parece una buena idea obtener todos los artículos que un autor en particular haya escrito antes de buscar el término en texto completo ... así que ¿hay alguna forma de ayudar a mysql?
por ejemplo .. si hiciste una auto-unión?
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');
La explicación para esto enumera primero el uso del índice author_id, luego la búsqueda de texto completo.
¿Significa eso que en realidad solo está haciendo la búsqueda de texto completo en el conjunto limitado según lo filtrado por author_id?
APÉNDICE
explica el plan para la auto-unión de la siguiente manera:
*************************** 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)