开课吧码堂mysql索引失效

最近,开课吧码堂的一位同学,遇到了一个让他感到棘手的问题。他在用MySQL查询数据时,发现某个查询语句耗时特别长,而且在扫描表的时候CPU的使用率也很高,这显然不是一个好的迹象。

开课吧码堂mysql索引失效

通过对查询语句进行优化,他发现可以加一个索引,但是在执行查询语句的时候,扫描行数并没有降下来,反而更高了,这是怎么回事呢?

经过调查,我们发现,原来加上的索引并没有被使用,这也是导致扫描行数没有降低的原因。那么为什么索引会失效呢?

CREATE TABLE `test` ( `id` int(11) NOT NULL AUTO_INCREMENT, `name` varchar(50) DEFAULT NULL, `age` int(11) DEFAULT NULL, PRIMARY KEY (`id`), KEY `idx_name` (`name`) ) ENGINE=InnoDB DEFAULT CHARSET=utf8; SELECT * FROM `test` WHERE `age` >20 AND `name` LIKE '%张%';