我在MySQL中启用了“log-queries-not-using-indexes”。我有一个由MySQL记录的查询,即不使用索引的查询。问题是这个查询使用LIKE例如。
category like '%fashion%'
如果我删除LIKE或将其更改为
category = 'fashion'
然后它说它正在使用索引。
因此,当我们在查询中使用LIKE时,MySQL会将其记录为不使用索引而不管是什么?
由于
答案 0 :(得分:2)
使用像%fashion%
这样的子句永远不会使用常规索引。如果您想进行这种搜索,则需要全文索引。
请记住字符串第一部分的varchar
索引。因此,如果您正在搜索字符串的任何部分fashion
的出现次数,那么索引将无法帮助您提高性能,因为您需要搜索每个字符串。
但是,如果你只搜索第一部分:
select * from table where field like 'fashion%'
然后可以使用索引并且可以提供帮助。