5. 分区相关操作
该类操作与SQL语句执行计划中分区表操作相关。根据不同的具体SQL语句及其他相关因素,如下各操作可能会出现于相关SQL语句的执行计划。
1)PARTITION RANGE ALL
对范围分区(RANGE PARTITION)表的所有分区进行子操作。该操作具体如图5-1中节点1所示。
图5-1 分区相关操作PARTITION RANGE ALL示例
2)PARTITION RANGE SINGLE
仅对范围分区表的一个分区进行子操作。
--注:
1)分区裁剪(Partition Pruning):分区剪裁是利用分区技术提高SQL语句性能的最简单也是最有效的方式之一,其又可分为静态分区剪裁和动态分区剪裁。SQL语句操作分区表的过程中,优化器会对SQL语句的谓词条件进行检查,以确定其中是否包含有关分区键的过滤条件,如包含,则可通过静态或动态分区剪裁技术,实现只访问满足该过滤条件的一个或部分分区,而放弃访问不必要的分区,这样,节省大量系统资源的同时,SQL语句性能也会被大幅提升。分区剪裁充分利用Oracle中索引、连接及并行等优化特性,通常能将SQL语句性能提升多至几个数量级。
该操作具体如图5-2中节点1所示。
图5-2 分区相关操作PARTITION RANGE SINGLE示例
3)PARTITION RANGE INLIST
对范围分区表中满足分区键列相关“IN(...) ”条件的所有分区进行子操作。该操作具体如图5-3中节点1所示。
图5-3 分区相关操作PARTITION RANGE INLIST示例
4)PARTITION RANGE ITERATOR
对范围分区表中满足分区键列相关匹配条件的每个分区进行迭代子操作。
--注:
1)仅当需要访问的表分区较少时,优化器才会考虑对表分区进行迭代操作。
该操作具体如图5-4中节点1所示。
图5-4 分区相关操作PARTITION RANGE ITERATOR示例
5)PARTITION RANGE OR
对范围分区表中满足分区键列相关的两个或多个匹配条件之一的分区进行子操作。该操作具体如图5-5中节点1所示。
图5-5 分区相关操作PARTITION RANGE OR示例
6)PARTITION RANGE SUBQUERY
对范围分区表中满足子查询条件的所有分区进行子操作。该操作具体如图5-6中节点4所示。
图5-6 分区相关操作PARTITION RANGE SUBQUERY示例
7)PARTITION RANGE MULTI-COLUMN
对以多个字段为分区键的范围分区表中,满足多个分区键列相关过滤条件的所有分区进行子操作。该操作具体如图5-7中节点1所示。
图5-7 分区相关操作PARTITION RANGE MULTI-COLUMN示例
8)PARTITION LIST ALL
对列表分区(LIST PARTITION)表的所有分区进行子操作。当结果数据可能出现于表的所有分区上时,需要访问所有分区。该操作具体如图5-8中节点1所示。
图5-8 分区相关操作PARTITION JOIN-FILTER示例
9)PARTITION LIST SINGLE
仅对列表分区表的一个分区进行子操作。该操作具体如图5-9中节点1所示。
图5-9 分区相关操作PARTITION LIST SINGLE示例
10)PARTITION LIST INLIST
对列表分区表中满足分区键列相关“IN(...)”条件的所有分区进行子操作。该操作具体如图5-10中节点1所示。
图5-10 分区相关操作PARTITION LIST INLIST示例
11)PARTITION LIST ITERATOR
对列表分区表中满足分区键列相关范围匹配条件的每个分区进行迭代子操作。该操作具体如图5-11中节点1所示。
图5-11 分区相关操作PARTITION LIST ITERATOR示例
12)PARTITION LIST OR
对列表分区表中满足分区键列相关的两个或多个匹配条件之一的分区进行子操作。该操作具体如图5-12中节点1所示。
图5-12 分区相关操作PARTITION LIST OR示例
13)PARTITION LIST SUBQUERY
对列表分区表中满足子查询条件的所有分区进行子操作。该操作具体如图5-13中节点4所示。
图5-13 分区相关操作PARTITION LIST SUBQUERY示例
14)PARTITION HASH ALL
对哈希分区(HASH PARTITION)表的所有分区进行子操作。该操作具体如图5-14中节点1所示。
图5-14 分区相关操作PARTITION HASH ALL示例
15)PARTITION HASH SINGLE
仅对哈希分区表的一个分区进行子操作。该操作具体如图5-15中节点1所示。
图5-15 分区相关操作PARTITION HASH SINGLE示例
16)PARTITION HASH INLIST
对哈希分区表中满足分区键列相关“IN(...)”条件的分区进行子操作。该操作具体如图5-16中节点1所示。
图5-16 分区相关操作PARTITION HASH INLIST示例
17)PARTITION HASH ITERATOR
对哈希分区表中满足分区键列相关匹配条件的每个分区进行迭代子操作。
该操作具体如图5-17中节点2所示。
图5-17 分区相关操作PARTITION HASH ITERATOR示例