MATCH和ORDER BY的索引



我有一个这样的查询:

SELECT * FROM staffs
WHERE MATCH staff_name AGAINST ('johnny')
ORDER BY staff_city ASC

举个例子,我想问一下我应该在这里使用哪个索引。对于MATCH()AGAINST(),列staff_name上有FULLTEXT索引,这没关系。但在查询中,staff_city列上也有ORDER BYFULLTEXT工作速度很快,但在对匹配结果进行排序时,搜索速度较慢。INDEX需要什么?

MySQL永远不能(几乎永远不会(在一个SELECT中使用两个索引。Optimizer从您拥有的索引中进行选择,通常会为查询选择最佳索引。

对于这个查询,将只使用您拥有的FULLTEXT索引,而不考虑表中的其他索引。

其他索引可能对某些其他查询有用。

更多:假设您只关心包含单词"johnny"的行,请更改:

AGAINST ('johnny')

-->

AGAINST ('+johnny' IN BOOLEAN MODE)

最新更新