如何用表中的其他列改进MYSQL全文搜索索引?

时间:2018-05-07 16:21:27

标签: full-text-search

我有这个慢查询(26秒):

SELECT uniqueIDS FROM search_V2 WHERE siteID=1 AND status=1 AND (MATCH(data) AGAINST ('scale' IN BOOLEAN MODE));

我首先想对 siteID_status 索引进行查询,然后使用完整的搜索索引。

任何解决方案?

2 个答案:

答案 0 :(得分:2)

所以这是我找到的最佳解决方案:

SELECT uniqueIDS FROM
(
    SELECT * FROM search_V2 WHERE siteID=1 AND status=1
) A
WHERE MATCH(data) AGAINST ('scale' IN BOOLEAN MODE);

这篇文章真的对我很有帮助:https://dba.stackexchange.com/questions/15214/why-is-like-more-than-4x-faster-than-match-against-on-a-fulltext-index-in-mysq/15218#15218?newreg=36837d8616984e289377475b27ee0758

我希望它也可以帮助别人。

答案 1 :(得分:0)

您可以先告诉查询要遵循哪个索引。请参阅https://dev.mysql.com/doc/refman/8.0/en/index-hints.html处的索引提示。如果不对其进行测试,您的查询就会像

一样

SELECT uniqueIDS FROM search_V2 WHERE siteID=1 AND status=1 AND (MATCH(data) AGAINST ('scale' IN BOOLEAN MODE)) USE INDEX(siteID_status,fulltext_index);

fulltext_index是您的全文索引的名称。希望它有效,但你很亲密。