0
点赞
收藏
分享

微信扫一扫

Oralce 执行计划

琛彤麻麻 2022-08-17 阅读 40


执行计划
� SQL语句访问和处理数据的方式

下面这张乱七八糟的图就是说,一条SQL语句从开始到结束可能要走好多条路。

Oralce 执行计划_数据

执行计划--数据的访问

� 直接表的访问
– 并行
– 多数据块...
� 通过索引访问
– index unique scan
– index range scan
–index full scan
–index fast full scan
– index skip scan

 

执行计划---数据的处理

� order by
� group by
�count
� avg
�sum.....

执行计划---数据的关联处理

Oralce 执行计划_执行计划_02

Nested loop join:从表里面拿出一条记录,把这条记录拿到另外一张表里面去扫。

Merge join:首先将两张表都排序,排序之后再做连接。这种机制效率不会太好,因为要对表的记录先排序。

Hash join:通常是大表和小表关联的时候hash join才有意义。通过hash函数将小表数据存储在内存当中,之后从大表里面取出数据通过hash过后的值定位去找数据。通常没有索引hash的效率会高一些。因为包括hash算法,使用这种机制对数据关联消耗cpu是较高的。

 

-----------上面列举了对数据的处理,对数据的访问,表关联,可见执行计划是多变的---------------

认识执行计划

Oralce 执行计划_数据_03

最简单产生执行计划的方式:

SQL> set autotrace trace exp;
SQL> set linesize 1200;
SQL> select * from test.mytest;

Execution Plan
----------------------------------------------------------
Plan hash value: 1692938441

----------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
----------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 1 | 3 | 3 (0)| 00:00:01 |
| 1 | TABLE ACCESS FULL| MYTEST | 1 | 3 | 3 (0)| 00:00:01 |

可以看到这里有缩进度的,有缩进的靠右的是越早执行的,如果两个是一样的没有缩进度的那么就上面的比下面的先执行。

 

执行计划--通过索引的访问数据

Oralce 执行计划_数据_04

举报

相关推荐

0 条评论