比方說,我有一個「物品」表,該表具有列:mysql - 任何方式來幫助全文搜索與另一個索引?
article_text: fulltext indexed
author_id: indexed
現在我想搜索出現一個特定arthor寫的一篇文章中的一個術語。
所以像:
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過濾?
附錄
的自我解釋計劃加入如下:
*************************** 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)
檢查author_id列是否可以爲空 – Sebas
它不可爲空(我認爲這種情況更好,但如果不是,我當然可以使它爲空) – ggez44
不,不能爲空總是更好 – Sebas