2014-12-03 97 views
1

假设我有一个数据库名称字段的索引。我记得读,如果我做的:如果mysql使用下划线,它仍然会使用我的索引

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

where name like '%Jon%'话,就不会使用索引,因此导致全表扫描。
如果我使用

where name like '__Jon%'可以在使用索引,或是否必须使用全扫描,因此下划线是一样糟糕的响应时间百分号?

+0

只是做了一些描述在一些测试查询的,它在我看来,_是效率不高于%。 – 2014-12-03 17:38:48

+2

[文档说_wildcard字符_](http://dev.mysql.com/doc/refman/5.0/en/mysql-indexes.html),我认为'_'作为通配符,而不仅仅是'%' ''_如果LIKE的参数是一个不以通配符开头的常量字符串,那么该索引也可用于LIKE比较。“ – 2014-12-03 17:44:12

+0

如果您已完成查询,您应该可以自由发布自己的答案'EXPLAIN以验证索引没有被使用,连同MySQL链接的文档文字。 – 2014-12-03 17:50:31

回答

相关问题