如何处理如下查询:
select ... from ... where match(field1) against('someA') and match(field2) against('someB') limit 50
如果条件 match(field1) against('someA') 和 match(field2) against('someB') 返回的结果都很大,则整个查询将非常非常慢。
有解决方案吗?
最佳答案
您可以为 field1
和 field2
两列创建另一个 FULLTEXT
索引。然后使用以下命令同时搜索两个搜索词:
MATCH(field1, field2) AGAINST ('+someA +someB') IN BOOLEAN MODE
当然,这可以找到 field1
包含两个搜索词而 field2
两者都不包含的行。我不确定您的应用的具体要求。
关于MySQL全文性能解决方案,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/1303577/