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、提交事务

posted @ 2024-09-11 15:04  稻草人&梦想  阅读(48)  评论(0)    收藏  举报