我在桌面上使用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秒。 确切的短语搜索是否昂贵?
我在这里错过了什么吗?
答案 0 :(得分:4)
我不确定完全匹配查询的性能,但您可以尝试下面的查询,看看性能如何?
SELECT COUNT(*)
FROM report
WHERE MATCH (reporttext) AGAINST ('porttitor vulputate' IN BOOLEAN MODE)
AND reporttext LIKE '%porttitor vulputate%' LIMIT 0, 1000