查询语句执行的5个阶段
2017-05-07 17:31 DataBases 阅读(680) 评论(0) 编辑 收藏 举报查询语句执行的5个阶段
1.SQL输入
数据库接受用户输入的SQL语句,准备执行。
2.语法分析
对输入的SQL语句进行词法分析,语法分析,得到语法分析树;这一阶段输出一颗多叉树。
3.语义检查
根据语法树和系统的元信息进行语义检查,对语法分析树进行逻辑判断,树的结构不发生变化。
对语法分析树上的各个结点进行语义分析,判断对象是否存在,是否重名;对不合语义的报告错误。
4.SQL优化
SQL优化通常包括两项工作:逻辑优化以及物理优化。它们都要对语法分析树的形态做修改;把语法分析 树编程查询书。
其中逻辑查询优化将生成逻辑查询执行计划,这个过程会对数据的结构进行调整。在生成逻辑查询计划后,
查询优化器会进一步对查询书进行物理查询优化。物理查询优化会对逻辑查询计划进行改造,改造的内容主要是对 连接的顺序进行调整。
SQL语句确定的连接顺序经过多表连接算法的处理,可能导致表之间的连接顺序发生变化,所以树的形态可能调整。
物理查询优化除了进行表的连接顺序调整外,还对单个表的扫描方式,两表连接的连接算法,运用代价估算模型进行评估,选择每一项操作中
代价最小的操作作为下一步优化的基础。物理查询优化的最终结果是生成最终物理查询执行计划。
5.SQL执行
在SQL执行阶段,依据物理查询计划执行查询,逐步调用相关算法进行执行。一条SQL最耗时的阶段,多发生在执行阶段。如果查询计划做的不好,则执行起来非常耗时。