2013-12-16 20 views
0

我有查詢一個問題:因爲它不使用全文索引使用「OR」當MySQL不使用索引WHERE

Select * From table Where MATCH(col1) AGAINST('mystring' IN BOOLEAN MODE) OR MATCH(col2) AGAINST('mystring' IN BOOLEAN MODE) 

,因爲查詢:

Select * From table Where MATCH(col1) AGAINST('mystring' IN BOOLEAN MODE) AND MATCH(col2) AGAINST('mystring' IN BOOLEAN MODE) 

做。

col1和col2都有一個全文索引,但是當使用OR而不是AND時,mysql執行全表搜索而不是使用其中一個索引。

如何使用索引選擇匹配'mystring'的2列中的(至少)其中一列的記錄?

+0

您可以發佈兩個查詢的解釋? –

回答

0

只要嘗試通過隔離查詢(只有一個過濾器)和UNION的相交結果來選擇每個集合。
另一種形式:

SELECT * FROM table WHERE MATCH (col1, col2) AGAINST ('mystring' IN BOOLEAN MODE)