我的查询有问题:
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)