谈谈Mysql索引优化不得不提防的坑
逍遥子 码农沉思录
前言
在之前的文章《聊聊Mysql优化之索引优化》中,笔者简单介绍了Mysql索引优化的原理和一些使用场景,然而Mysql索引优化的内容还远远不止这些。在实际工作中,我们有时候会碰到明明已经建了索引,但是查询速度还是上不去的问题,这时候就要当心了,有可能你的查询语句根本就没使用到索引,因为Mysql索引在某些情况下会失效,今天我将为大家介绍下Mysql索引优化中不得不提防的坑。
为了方便下文讲解,我们先建2张表:user表和address表(由于不同MySQL版本与执行引擎的优化方法不一样,所以本文所举的例子都是针对MySQL 5.7.18版本,InnoDB存储引擎而言的),建表语句如下:
CREATE TABLE `user` (
`id` varchar(255) NOT NULL ,
`phone` varchar(255) NULL ,
`age` int NULL ,
`name` varchar(255) NULL ,
PRIMARY KEY (`id`) ,
INDEX `normal_index_phone` (`phone`) USING BTREE ,
INDEX `normal_index_age` (`age`) USING BTREE
)
ENGINE=InnoDB
DEFAULT CHARACTER SET=utf8;
从上述SQL语句可知,user表