一条SQL查询语句是如何执行的?( 八 )


需要注意的是 , MySQL 8.0 版本直接将查询缓存的整块功能删掉了 , 也就是说 8.0 开始彻底没有这个功能了 。

分析器

如果没有命中查询缓存 , 就要开始真正执行语句了 。 首先 , MySQL 需要知道你要做什么 , 因此需要对 SQL 语句做解析 。

分析器先会做“词法分析” 。 你输入的是由多个字符串和空格组成的一条 SQL 语句 , MySQL 需要识别出里面的字符串分别是什么 , 代表什么 。

MySQL 从你输入的\"select\"这个关键字识别出来 , 这是一个查询语句 。 它也要把字符串“T”识别成“表名 T” , 把字符串“ID”识别成“列 ID” 。

做完了这些识别以后 , 就要做“语法分析” 。 根据词法分析的结果 , 语法分析器会根据语法规则 , 判断你输入的这个 SQL 语句是否满足 MySQL 语法 。

如果你的语句不对 , 就会收到“You have an error in your SQL syntax”的错误提醒 , 比如下面这个语句 select 少打了开头的字母“s” 。

推荐阅读