2009-12-09 62 views
0

我有一個表文檔與全文索引headline_idx上兩列,標題文本其中文本是MEDIUMTEXT列,還有一些其他的領域,一個名爲郎之一。MySQL全文搜索與OR結合的問題?

如果我做了以下選擇:

select * from Document where lang= 'en' AND match(headLine,text) against ("test") 

一切工作正常,則使用全文指數不如預期,但如果我改變以及一種或類似這樣的:

select * from Document where lang= 'en' OR match(headLine,text) against ("test") 

的全文索引不被使用,它甚至不是possible_keys的一部分,如果我做了EXPLAIN EXTENDED這使得任何索引提示都無用。

我很樂意將第三列添加到全文索引中,但在實際情況下該列在另一個表中。我運行MySQL的5.1.35版本。

關於發生了什麼事情的任何想法?

+1

我想你忘了改「與」一「或」 ... – Romain 2009-12-09 09:36:20

+0

啊,謝謝,固定。 – 2009-12-09 09:49:50

回答

1

來自MySql的參考文獻引用: Index Merge不適用於全文索引。我們計劃在未來的MySQL版本中擴展它以涵蓋這些內容。

這個特定的查詢可以與工會進行改寫,然後它會使用索引:

select * from Document where lang= 'en' UNION 
select * from Document where match(headLine,text) against ("test")