1、客户端和服务器建立连接,发送请求
2、服务器先检查查询缓存。如果在查询缓存中发现了该sql,则会进行权限校验,权限校验通过,直接返回结果。如果查询缓存中没有,则进入下面的步骤(对应查询缓存这一过程,8.0这一过程已经不存在了,8.0完全抛弃了这个功能)
3、服务器对sql进行解析。识别出sql里面的字符串是否符合标准,比如select关键字不能写错。识别出sql里面的字符串的具体意思是什么,比如T1是表名,C1是列名(对应解析器这一过程)
4、服务器对sql进行预处理。确定sql的执行路径,比如走索引还是全表,多表连接时哪张表先走哪张表后走
5、服务器对sql进行查询优化。当你的where条件的可读性和效率有冲突时mysql内部还会自动进行优化,也就是大家理解的重写where子句。计算各项查询方法的成本、生成对应的执行计划(对应优化器这一过程)
6、服务器调用存储引擎的API来执行该sql语句,并将结果发送给客户端(对应执行器这一过程)