Oracle 中 SQL的执行流程


Oracle 中 SQL的执行流程

SQL执行流程

当用户提交待执行的目标SQL给Oracle后,Oracle首先会执行对目标SQL的校验过程。在这个校验过程中,Oracle会执行对目标SQL的语法、语义和权限检查,然后对SQL进行等价改写。

接下来,就正式进入了查询优化(Query Optimization)这个步骤,在这个步骤里,根据不同的优化器类型,Oracle会根据不同的判断原则来从执行完查询转换这一步后得到的目标SQL的诸多可能的执行路径(Access Path)中选择一条执行路径来作为其执行计划,即查询优化的偷入就是执行完查询转换这一步后得到的等价改写SQL,其输出就是该SQL的执行计划。

在得到了目标SQL的执行计划后,接下来Oracle就会根据得到的执行计划去实际执行该SQL并将执行结果返问给用户。

以上就是Oracle数据库里SQL语句的大致执行过程,我们有时又将上述执行步骤中的“校验”、“查询转换”、“查询优化”这三个步骤统称为执行目标SQL过程中的解析(parse).确定执行计划是比较昂贵的步骤!

image-20230330165125072

image-20230330165333489

image-20230330165404715

image-20230330165659903

执行计划怎么看?

image-20230330171309517

单表访问路径

image-20230330171411014

image-20230330171640579

image-20230330171859690

image-20230330171915783

image-20230330172024548

分析工具

1.EM

2.AWR报告

image-20230330172800092

image-20230330172917360

image-20230330173047683

image-20230330173215634

image-20230330173248555

image-20230330173450853

image-20230330173527929

ASH 报告工具

image-20230330173625659

image-20230330173802629

获取SQL执行计划

方式一:awrsqlrpt

image-20230330174148815

方式二:sqlplus

image-20230330174344169

最常用的方式三:explain plan

image-20230330174008460

image-20230330174024665

方式四:获取缓存中的sql执行计划

image-20230330174552611

image-20230330174628055

image-20230330174729540

image-20230330174855259

image-20230330174913123

索引创建:

image-20230330175035374

适合建索引的列

image-20230330175403147

不适合建索引的列

image-20230330175425540

不走索引的情况

image-20230330175727542

image-20230330175815160

image-20230330180224396

image-20230330180240312

image-20230330180447216


Author: qwq小小舒
Reprint policy: All articles in this blog are used except for special statements CC BY 4.0 reprint policy. If reproduced, please indicate source qwq小小舒 !
  TOC