MySQL在WHERE中使用“OR”时不使用索引

时间:2013-12-16 17:01:19

标签: mysql sql indexing full-text-search 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列中的一列的记录?

1 个答案:

答案 0 :(得分:0)

尝试通过隔离查询(仅使用一个过滤器)选择每个集合,然后与UNION交叉结果 另一种形式:

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