MySQL与另一个条件搜索相匹配

时间:2019-03-04 19:39:36

标签: mysql full-text-search

我有一个简单的MySQL查询,但是当我添加另一个搜索条件时,它无法在9000秒的合理时间内搜索到。第二列(col2)已建立索引,因此我不确定如何更快地运行此查询? Col1设置为FULL TEXT,并且在没有第二个条件的情况下运行速度很快。任何帮助都会很棒。下面是查询的示例:

SELECT *
FROM table
where
match(col1) against('word1') AND
col2 = 'word2' 
limit 500000

1 个答案:

答案 0 :(得分:0)

MySQL不会同时使用FULLTEXT索引和常规B树索引来访问表。

请参见https://dev.mysql.com/doc/refman/8.0/en/explain-output.html下的EXPLAIN Join Types。这也称为访问类型

解释查询时,每个表引用将显示一种访问类型,这是它用来读取表的方法。例如,通过唯一索引,通过非唯一索引,通过表扫描等。

fulltext是这些访问类型之一。

据我所知,每种访问类型都与其他联接类型互斥。因此,它会在不使用任何其他索引的情况下进行全文本搜索,否则它将在另一列上使用您的索引,在这种情况下,它将不使用全文本索引。

使用非全文索引可能仍然是更好的选择,如果这样可以比全文索引更有效地选择狭窄的行子集。

相关问题