oracle11g - 哪一个是执行计划的驱动表?
问题描述
在Oracle数据库中,当我得到执行计划或解释计划时,哪个行源被认为是驱动表?它是在另一个之上的吗?或者嵌套连接、合并连接等是否会发生这种变化?此外,如果我通过 SQL Developer 获得执行计划,或者解释计划命令等是否会改变?我知道优化器选择较小的表作为驱动表。但我知道,它并不总是这样做。所以我对此感到困惑。顺便说一句,我问的是基于成本的优化。因此,如果您可以在 CBO 上进行解释,将不胜感激。例如在下面的计划中,哪一张是驾驶台?我们如何理解它是驱动表?是因为它在上面吗?此致
select * from hr.employees e join hr.departments d on d.department_id =
e.department_id where d.department_name like 'A%'
Plan hash value: 1021246405
--------------------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | | | 4 (100)| |
| 1 | NESTED LOOPS | | 10 | 900 | 4 (0)| 00:00:01 |
| 2 | NESTED LOOPS | | 10 | 900 | 4 (0)| 00:00:01 |
|* 3 | TABLE ACCESS FULL | DEPARTMENTS | 1 | 21 | 3 (0)| 00:00:01 |
|* 4 | INDEX RANGE SCAN | EMP_DEPARTMENT_IX | 10 | | 0 (0)| |
| 5 | TABLE ACCESS BY INDEX ROWID| EMPLOYEES | 10 | 690 | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
3 - filter("D"."DEPARTMENT_NAME" LIKE 'A%')
4 - access("D"."DEPARTMENT_ID"="E"."DEPARTMENT_ID")
Note
-----
- this is an adaptive plan
解决方案
推荐阅读
- filemaker - Filemaker 中的门户为空?
- typescript - Typescript 类型匹配对象,其 valueOf 最终返回一个字符串
- swift - 当 UIView 在滚动 UITableView 时重新出现时动画停止
- sql - 使用分区和大小写求和的 DB2 查询中的条件抛出错误
- php - 使用 OHO Codeigniter 备份 MySQL 数据库
- python - 从 gui 打开一个新的 gui
- webpack - 如何根据环境变量自定义我的 Service Worker?
- excel - 我想修改代码,以便在打开工作簿后立即运行宏
- compilation - x86/x64编译与MSIL的关系
- python - 如何使用 twitter api 从 python 中的特定配置文件打印推文