问一个关于索引的问题,like '%aaa%'这种应该是不走索引的,但是为什么我运行了一下,发现使用了索引,求大神帮忙解答一下,
EXPLAIN SELECT `date` FROM zt_action WHERE `action` LIKE '%ct%';
zt_action表我建了联合索引
CREATE INDEX `actor_action_date` ON zt_action(`actor,action,date`),
请大神来帮忙解答,
这个只是没从实际数据行进行查找,直接从索引中进行查找,类似mssql的index scan,性能并不会好到哪去。
那这个是不是使用了索引呢,
@坐在家里晒太阳: 是,但是相当低效的
@Daniel Cai: 虽然低效,但是也是使用了索引,那Mysql里说以通配符 % 和 _ 开头作查询时,MySQL不会使用索引,这不是与之相反的说法吗
@坐在家里晒太阳: 一般意义上的使用了索引和你所谓的使用了“索引”是两码事。
你这块的explain中的type是index,也就是只是通过在索引中一条条的的查找完成搜索(可以理解为对整个索引做一次遍历)
而一般意义的使用索引是通过索引直接快速定位数据
这两种是不相同的,性能也是两个完全不同的天地,要是正常点的查询要用上索引那里的type应该是ref以上
@Daniel Cai: 感谢大神回答,之前一直有误区,以为用到了索引表,就是使用了索引,看来不是这样的,继续学习中