MySQL中的log-queries-not-using-indexes和LIKE

时间:2011-02-09 11:49:39

标签: mysql join logging indexing sql-like

我在MySQL中启用了“log-queries-not-using-indexes”。我有一个由MySQL记录的查询,即不使用索引的查询。问题是这个查询使用LIKE例如。

category like '%fashion%'

如果我删除LIKE或将其更改为

category = 'fashion'

然后它说它正在使用索引。

因此,当我们在查询中使用LIKE时,MySQL会将其记录为不使用索引而不管是什么?

由于

1 个答案:

答案 0 :(得分:2)

使用像%fashion%这样的子句永远不会使用常规索引。如果您想进行这种搜索,则需要全文索引。

请记住字符串第一部分的varchar索引。因此,如果您正在搜索字符串的任何部分fashion的出现次数,那么索引将无法帮助您提高性能,因为您需要搜索每个字符串。

但是,如果你只搜索第一部分:

select * from table where field like 'fashion%'

然后可以使用索引并且可以提供帮助。