• 先说下缓存中数据存储格式:key(sql 语句)- value(数据
值),所以如果 SQL 语句(key)只要存在一点不同之处就
会直接进行数据库查询了;
• 由于表中的数据不是一成不变的,大多数是经常变化的,而
当数据库中的数据变化了,那么相应的与此表相关的缓存数
据就需要移除掉;
(3)解析器/分析器: 分析器的工作主要是对要执行的 SQL 语句进行
词法解析、语法解析,最终得到抽象语法树,然后再使用预处理器对
抽象语法树进行语义校验,判断抽象语法树中的表是否存在,如果存
在的话,在接着判断 select 投影列字段是否在表中存在等。
(4)优化器: 主要将 SQL 经过词法解析、语法解析后得到的语法
树,通过数据字典和统计信息的内容,再经过一系列运算 ,最终得出
一个执行计划,包括选择使用哪个索引
• 在分析是否走索引查询时,是通过进行动态数据采样统计分
析出来;只要是统计分析出来的,那就可能会存在分析错误
的情况,所以在 SQL 执行不走索引时,也要考虑到这方面
的因素
(5)执行器: 根据一系列的执行计划去调用存储引擎提供的 API 接
口去调用操作数据,完成 SQL 的执行。
一、SQL 语句及索引的优化
评论