题目 01- 一条 SQL 语句在 MySQL 中是如何执行的?
1.首先如果是在命令行执行的,执行前首先要登录mysql,如果是后端程序通过驱动执行的,首先要获取连接,一般都会通过连接池获取连接,不会每次都新建一个连接。
2.连接到MySQL后,mysql会对语句进行语法分析,所谓分析,指的是识别到要查那哪个表,哪个列等等。
3.解析之后的下一步是查询缓存,如果是select语句,会先去查询缓存查,如果是update语句,会去清空这个表的查询缓存。由此可见查询缓存的使用代价非常高,所以在mysql8.0之前,建议按需使用,只在需要使用的时候显式开启。在mysql8之后,这个功能已经被去掉了。
4.然后下一步是优化器,通过优化器选择最优的执行方案,比如有多个索引可以选的时候,优化器会选择走成本较低的那个,这个成本包括io成本和时间成本。
然后调用存储引擎的接口去执行该语句。接下来以InnoDb为例