mysql - jakikolwiek sposób, aby pomóc w wyszukiwaniu pełnotekstowym z innym indeksem?
Powiedzmy, że mam tabelę „artykułów” z kolumnami:
article_text: fulltext indexed
author_id: indexed
teraz chcę wyszukać termin, który pojawia się w artykule napisanym przez konkretnego arthora.
więc coś w stylu:
select * from articles
where author_id=54
and match (article_text) against ('foo');
wyjaśnienie tego zapytania mówi mi, że mysql użyje tylko indeksu pełnotekstowego. Uważam, że mysql może używać tylko jednego indeksu, ale z pewnością wydaje się mądrym pomysłem na zdobycie wszystkich artykułów, które napisał konkretny autor przed pełnotekstowym wyszukiwaniem terminu ... więc czy istnieje pomoc dla mysql?
na przykład .. jeśli wykonałeś samodzielne połączenie?
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');
Wyjaśnienie dla tego zawiera najpierw użycie indeksu author_id, a następnie wyszukiwanie pełnotekstowe.
czy to oznacza, że w rzeczywistości tylko wyszukiwanie pełnotekstowe w ograniczonym zestawie jest filtrowane przez author_id?
UZUPEŁNIENIE
wyjaśnij plan dla siebie łącz w następujący sposób:
*************************** 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)