SQL解析执行的主要步骤:
- 对提交SQL的进行判断是否已解析和生产执行计划,对已生成执行计划的SQL直接执行返回结果
- 对SQL进行语法规范检查
- 对SQL进行语义检查,使用表、字段、函数、视图等数据库对象是否存在,以及是否拥有对应的操作权限
- 将SQL解析成语法树,按照不同的算法策略并做一些替换其中视图、表达式,合并查询等优化,去生成由关系代数算子组成的(投影 (π),选择 (σ),自然连接 (⋈),聚集运算(G)等算子)不同逻辑执行计划
- 再由数据库的优化器去把上述不同的逻辑执行计划转化为物理执行计划(Table Scan, Index Range Scan, Filter, NestLoopJoin, Hash join等组成),并且选择出其中最优的物理执行计划,在Oracle中基于CBO的优化器会结合数据字典和统计信息计算出不同的执行计划的cost,最终选择cost最小的为最优的执行计划
- 将最优的执行计划载入Share pool中,并执行返回结果
参考文章 SQL解析树:http://blog.csdn.net/qq910894904/article/details/34861173
欢迎各位批评指正文中描述错误的地方或者不足的地方,互助互勉!