SQL语法执行过程:
1、synatic:语法分析,检查 SQL 语法是否错误,有没有拼写错误。
2、Semantic:语义分析,检查要查询的对象是否存在,以及用户是否有对应对象的操作权限。
3、Parent cursor:在 library cache 中检查语句中的 cursor 是否存在,如果存在可重用的 cursor ,则可以把 PGA 中的 private SQL Area 和其关联,然后跳至第八步,此过程叫做软解析;如果不存在则申请一个 parent cursor , parent cursor 就是用来保存 SQL 语句的,然后进行第四布
4、View Merge:如果用户的语句中用到了视图,则把视图语句合并到用户语句中;
5、Statement transformation:把复杂的 SQL 转换成简单的 SQL 语句,比如展开子查询等;
4和 5 又可以叫做 logical optimization
6、Optimization:确定最佳的访问路径,选择最小代价的访问方式; physical optimization
7、QEP generation:(生成执行计划), QEP query Execution Plan ,也就是产生 child cursor 执行计划会保存在 child cursor 中,并和 parent cursor 相关联;
8、QEP Execution:执行语句,生成结果。