MySQL使用或与MATCH对抗会大大降低查询速度

MySQL使用或与MATCH对抗会大大降低查询速度,mysql,performance,full-text-search,sql-like,full-text-indexing,Mysql,Performance,Full Text Search,Sql Like,Full Text Indexing,列是索引和全文的。为什么OR会增加5-8秒 SELECT * FROM exampleTable WHERE MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE) // returns in .05 seconds SELECT * FROM exampleTable WHERE someColumn LIKE 'testing123%' // returns in .003 seconds SELECT * FROM examp

列是索引和全文的。为什么OR会增加5-8秒

SELECT * FROM exampleTable WHERE MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE) 
// returns in .05 seconds
SELECT * FROM exampleTable WHERE someColumn LIKE 'testing123%' 
// returns in .003 seconds
SELECT * FROM exampleTable WHERE (MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE) OR MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)) 
// returns in 5-8 seconds; yes, they are same MATCH statement...
SELECT * FROM exampleTable WHERE (MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)OR someOtherIndexedColumn LIKE 'testing123%' 
// returns in 5-8 seconds; ***** different columns this time*******

我觉得奇怪的是,MySQL在使用同一语句时速度如此之慢。这就像使语句SELECT*FROM tableName,其中1或1为5秒。列是相同还是不同在速度上没有区别

虽然MySQL 5.0+现在支持,但目前存在以下限制:

索引合并不适用于全文索引。我们计划延长 它将在未来的MySQL版本中涵盖这些内容

通常,您可以将这些重写为联合查询:


虽然MySQL 5.0+现在支持,但目前存在以下限制:

索引合并不适用于全文索引。我们计划延长 它将在未来的MySQL版本中涵盖这些内容

通常,您可以将这些重写为联合查询:


哪个版本的MySQL服务器?版本14.14发行版5.6.22,适用于使用EditLine Wrapper的Linux x86_64哪个版本的MySQL服务器?版本14.14发行版5.6.22,适用于使用EditLine Wrapper的Linux x86_64谢谢Marcus。我将自己运行两个查询并合并结果:使用示例UNION进行以上和以后的查询。再次感谢!谢谢你,马库斯。我将自己运行两个查询并合并结果:使用示例UNION进行以上和以后的查询。再次感谢!
SELECT * FROM exampleTable
WHERE MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)
UNION
SELECT * FROM exampleTable
WHERE MATCH(someColumn) AGAINST('+testing123*' IN BOOLEAN MODE)