沃趣科技作为国内领先的数据库云平台解决方案提供商,一直致力于企业级数据库云平台产品的研发,为用户提供高性能、高可用、可扩展的的数据库云环境及不同业务场景需求的数据库平台,满足客户对极致性能、数据安全、容灾备份、业务永续等需求。沃趣科技凭借专业的团队,优质的产品,前沿的技术,贴心的服务赢得了客户的信任与尊重,也获得了市场的认同。
在第3部分(引用沃趣科技——执行计划-3:解释规则),我们用一个简单的hash join介绍了阅读执行计划最基本的规则---”子操作按先后顺序执行,递归向下“。这让我们了解查询中Oracle生成rowsource的顺序和访问中不同物理对象的顺序(隐式的)。
这个系列的开头,我就强调过规则不是适用于所有的场景,下一部分(第5部分)里我们会来看几个我们需要特别注意的场景。但是在这部分中,我们将继续使用更简单的例子,来了解应用规则时谓词的选择时机和使用的一些细节。
Basics
这里列出上个部分文章中两表hash join的执行计划:
--------------------------------------------------------------------------------------
| Id | Operation | Name | Rows | Bytes | Cost (%CPU)| Time |
--------------------------------------------------------------------------------------
| 0 | SELECT STATEMENT | | 10 | 300 | 22 (0)| 00:00:01 |
|* 1 | HASH JOIN | | 10 | 300 | 22 (0)| 00:00:01 |
| 2 | TABLE ACCESS BY INDEX ROWID| T1 | 10 | 150 | 11 (0)| 00:00:01 |
|* 3 | INDEX RANGE SCAN | T1_I1 | 10 | | 1 (0)| 00:00:01 |
| 4 | TABLE ACCESS BY INDEX ROWID| T2 | 10 | 150 | 11 (0)| 00:00:01 |
|* 5 | INDEX RANGE SCAN | T2_I1 | 10 | | 1 (0)| 00:00:01 |
--------------------------------------------------------------------------------------
Predicate Information (identified by operation id):
---------------------------------------------------
1 - access("T2"."ID"="T1"."ID")
3 - access("T1"."N_1000"=1)