3

我在表上使用 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 秒。精确词组搜索那么贵吗?

我在这里错过了什么吗?

4

1 回答 1

4

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

SELECT COUNT(*) 
FROM   report 
WHERE  MATCH (reporttext) AGAINST ('porttitor vulputate' IN BOOLEAN MODE)   
  AND  reporttext LIKE '%porttitor vulputate%' LIMIT 0, 1000
于 2013-04-08T11:23:44.100 回答