MySQL - 如何知道查询是否使用FTS索引

时间:2016-11-25 09:03:06

标签: mysql

如标题所示,您如何知道查询是否使用FTS索引?

通常会显示using index condition

我的疑问是:

SELECT * 
FROM news 
WHERE MATCH(news_title,news_keywords) AGAINST ('news') 
AND news_date_created BETWEEN '2016-01-01' AND '2016-12-31'

并执行EXPLAIN并给了我:

+----+-------------+-------+------------+----------+--------------------------+------------+---------+-------+------+----------+-------------------------------+
| id | select_type | table | partitions | type     | possible_keys            | key        | key_len | ref   | rows | filtered | Extra                         |
+----+-------------+-------+------------+----------+--------------------------+------------+---------+-------+------+----------+-------------------------------+
|  1 | SIMPLE      | news  | NULL       | fulltext | news_date_idx,news_title | news_title |       0 | const |    1 |   100.00 | Using where; Ft_hints: sorted |
+----+-------------+-------+------------+----------+--------------------------+------------+---------+-------+------+----------+-------------------------------+

我不知道它是否使用了索引。它只是说它正在使用where and ft_hints

1 个答案:

答案 0 :(得分:3)

答案在解释结果的key列中,列出了所使用的索引。在这种特殊情况下,使用了news_title索引。如果这是您的全文索引,则使用它。

另请注意,除了fulltext search in Boolean mode on myiasm tables之外,所有搜索都需要匹配的全文索引:

  

MATCH()列列表必须与表的某些FULLTEXT索引定义中的列列表完全匹配,除非此MATCH()在MyISAM表上是IN BOOLEAN MODE。对于MyISAM表,布尔模式搜索可以在非索引列上完成,尽管它们可能很慢。