mysql 模糊查询不使用索引?explain显示用到索引

创建了一个test_demo表,在其中加了5000+条数据

 SET FOREIGN_KEY_CHECKS=0;
DROP TABLE IF EXISTS `tb_test`;
CREATE TABLE `tb_online_disk_mgmt` (
  `id` int(11) NOT NULL AUTO_INCREMENT,
  `node_name` varchar(512) NOT NULL COMMENT '节点名称',
  `node_level` tinyint(4) NOT NULL COMMENT '节点所在层',
  `area_code` int(11) NOT NULL COMMENT '区域代码',
  PRIMARY KEY (`id`),
  KEY `area_level_name` (`area_code`,`node_level`,`node_name`(255)) USING BTREE,
  KEY `area_name` (`area_code`,`node_name`(255))
)
模糊查询不会使用索引,会进行全表查询。在mysql5.5中进行试验。通过结果对比的确可以看出like "%xxx%"这种是没有使用索引,进行了全表查询的,但是key为什么会显示area_level_name呢?正常的在进行全表扫描的时候,没有用到索引,key不用改为空吗?

使用explain对select进行解释

求帮助~~~不要沉....

extra 没有Using index啊,你用主键查找肯定有Using index

有Using index啊,你用主键查找肯定有Using

Using index忘记了吧

using index :使用覆盖索引的时候就会出现
using where:在查找使用索引的情况下,需要回表去查询所需的数据

这个是网上解释 ,意思就是两个sql都用到了索引,但是第二个不是应该不会用到吗??

%开头的模糊查询,会导致全表扫描

像like 'me%'  这个百分号之前还是有用到索引的  匹配开头两个字母命中的这些数据用到 KEY `area_name` (`area_code`,`node_name`(255)
这个索引
like '%me%' 这个 条件不能使用到索引  但是 你这个条件之前的 area_code=10 是可以用 KEY `area_name` (`area_code`,`node_name`(255) 索引的  

可以用啊,只要%不在字段前面就可以的