如果使用下划线,mysql是否仍会使用我的索引

时间:2014-12-03 17:36:09

标签: mysql

假设我在数据库中的名称字段上有索引。我记得如果我这样做的话,请阅读:

where name like 'Jon%'它仍会使用索引, 但如果我这样做

where name like '%Jon%'然后它无法使用索引,因此会导致全表扫描 如果我使用

where name like '__Jon%'是否可以使用索引,还是必须使用完整扫描,因此下划线与响应时间的百分号一样差?

1 个答案:

答案 0 :(得分:0)

正如Michael Berkowski所指出的,官方文件指出:The index also can be used for LIKE comparisons if the argument to LIKE is a constant string that does not start with a wildcard character.

所以任何类型的通配符都将消除索引的使用,而_是一个通配符。

这里有一些快速屏幕截图解释了使用/不使用索引的解释查询:

Show results using a query with an index

enter image description here