mysql全文精确短语慢

时间:2013-04-08 11:17:29

标签: mysql performance full-text-search

我在桌面上使用InnoDB全文搜索。 我创建了400,000个虚拟报告并创建了全文。 搜索一个单词的速度非常快。

SELECT count(*) from report where MATCH (reporttext) AGAINST ('dolor' IN BOOLEAN MODE) LIMIT 0, 1000
1 row(s) returned   0.717 sec / 0.000 sec

count(*)
199629

在解释查询时:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
1   SIMPLE  report  fulltext    FTReportText    FTReportText    0   NULL    1   "Using where"

到目前为止我要说的很好,现在当我们运行以下查询时:

SELECT count(*) from report where MATCH (reporttext) AGAINST ('"porttitor vulputate"' IN BOOLEAN MODE) LIMIT 0, 1000    1 row(s) returned
50.732 sec / 0.000 sec

count(*)
22947

解释:

id  select_type table   type    possible_keys   key key_len ref rows    Extra
 1  SIMPLE  report  fulltext    FTReportText    FTReportText    0   NULL    1   "Using where"

正如您现在可以看到的第二个查询,时间约为50秒。 确切的短语搜索是否昂贵?

我在这里错过了什么吗?

1 个答案:

答案 0 :(得分:4)

我不确定完全匹配查询的性能,但您可以尝试下面的查询,看看性能如何?

SELECT COUNT(*) 
FROM   report 
WHERE  MATCH (reporttext) AGAINST ('porttitor vulputate' IN BOOLEAN MODE)   
  AND  reporttext LIKE '%porttitor vulputate%' LIMIT 0, 1000