MySQL索引失效情况及MySQL执行步骤
一、mysql索引失效的情况
七字口诀:“模型数空运最快”
模:使用like进行模糊查询的时候,以百分号%开头的,索引就会失效。
型:代表数据类型,数据类型错误了,索引也会失效。
数:函数,对索引的字段使用内部函数的,索引也会失效。这种情况,应该建立基于函数的索引。
空:null,索引不存储空值,如果没有声明nou null,数据库会认为有可能存在空值,也不会按照索引进行计算。
运:运算,对索引列进行加减乘除等运算的,会造成索引失效。
最:复合索引中索引列的顺序非常重要,如果不是按照索引列最左列开始查找,则无法使用索引。
快:全表扫描最快,如果数据库认为全表扫描更快的时候,它就不会使用索引。
二、mysql执行步骤:
1、我们在客户端发起一个SQL的查询;
2、连接器判断用户登录以及用户权限;
3、缓存命中,走缓存(mysql缓存不是redis缓存),直接返回查询结果;
3、缓存没命中,到达分析器,对SQL语句进行分析,包括预处理与解析过程;
4、优化器,对SQL语句进行优化;
5、执行器,调用存储引擎,执行具体的SQL操作;
6、将操作记录在undo log中,并存储回滚段指针和事务ID。
7、通过索引查找数据
8、写入redo log
9、写binlog
10、提交事务

浙公网安备 33010602011771号