#执行算子

# 数据查询算子

算子名称 含义 适用行模式 适用列模式
SUBQUERY 子查询标识,表示存在行子查询执行计划,列子查询会转为result计划。
VIEW 视图标识,当行表同层查询存在from子查询或者用户视图时需要增加。 ×
CONNECT BY 层次递归查询,对于某一条记录,以深度优先返回与当前记录通过connect by条件关联的所有记录,且返回的记录集依据prior id=father_id这个条件,形成的是一个包含当前的记录和以当前记录id为根节点的树状结构数据。 ×
SELECT STATEMENT 查询语句标识。
INSERT STATEMENT 插入语句标识
UPDATE STATEMENT 数据更新语句标识。
DELETE STATEMENT 数据删除语句标识。
MERGE STATEMENT 数据批量插入语句标识,满足条件时插入语句,在一次全表扫描中可以完成所有INSERT。
UNION ALL 将多个SELECT的结果集合并返回。
AGGREGATE 对未分组的数据执行聚集操作。
FOR UPDATE 查询某行数据的同时加行级锁,防止其他用户更新此条数据。
RESULT 谓词重组后,计划树上需要承载FILTER和投影的独立计划节点
WINDOW limit数据筛选。用于限定结果集返回行数,具有略过offset的能力。
WINDOW SORT 窗口函数标识,可以同时进行分组和排序,且会返回原始信息而非分组后(一组只有一条)的信息。
FIRST ROW 获取下层扫描算子得到的第一行记录。

# 表扫描算子

算子名称 含义 适用行模式 适用列模式
TABLE ACCESS FULL 全表扫描。
TABLE ACCESS BY INDEX ROWID 根据索引查找到对应数据的block的rowid(根据rowid回表)。
TABLE ACCESS BY USER ROWID 指定rowid进行数据block的查找。

# 索引扫描算子

算子名称 含义 适用行模式 适用列模式
INDEX UNIQUE SCAN 唯一索引扫描,仅仅适用于where条件是等值查询的SQL。
INDEX RANGE SCAN DESCENDING 索引范围降序扫描 。与索引范围扫描区别在与,索引查找方向为降序(从大到小)。当扫描对象是唯一索引是,谓词条件必须是范围查询(between、<、>);扫描对象是非唯一性索引,则没有限制。索引范围降序扫描可能返回多条记录。
INDEX RANGE SCAN 索引范围扫描。当扫描对象是唯一索引是,谓词条件必须是范围查询(between、<、>);扫描对象是非唯一性索引是,则没有限制。索引范围扫描可能返回多条记录。
INDEX FULL SCAN DESCENDING 按降序方式进行索引全扫描。
INDEX FULL SCAN 索引全扫描。扫描目标索引所有叶子块的所有索引行。
INDEX FAST FULL SCAN 索引快速全扫描。类似索引全扫描,但扫描结果不是有序的。因为是物理读,不是逻辑读索引,同时可以并行读索引。
INDEX FULL SCAN (MIN/MAX) 索引全扫描取最小/最大。不分组情形下,针对索引字段的min、max函数优化,只返回一条记录。
INDEX RANGE SCAN (MIN/MAX) 索引范围扫描取最小、最大。不分组情形下,针对索引字段的min、max函数优化,只返回一条记录。

# 分区扫描算子

算子名称 含义 适用行模式 适用列模式
PART SCAN ITERATOR 一组分区扫描。
PART SCAN ALL 所有分区扫描。
PART SCAN SINGLE 单个分区扫描。

# 分组/排序算子

算子名称 含义 适用行模式 适用列模式
SORT 据实际情况生成的排序计划。
TOP SORT 据实际情况生成前TOP个数据的排序计划。
SORT ORDER BY order by语句产生的排序计划。
HASH DISTINCT 使用hash算法对数据进行除重。
SORT DISTINCT 使用排序算法对数据进行除重。
SORTED DISTINCT 使用排序算法对已排序的数据进行除重。
TOP SORT DISTINCT 使用排序算法对已排序的数据进行除重,并返回前TOP个。
HASH GROUP 使用hash算法对数据进行分组。
SORT GROUP 使用排序算法对数据进行分组。 ×
TOP SORT GROUP 使用排序算法对数据进行分组,并返回前TOP个。 ×
GROUP 对已排好序或者分组的数据进行分组。

# HASH JOIN算子

算子名称 含义 适用行模式 适用列模式
HASH JOIN OUTER HASH JOIN左外连接。以左表为准,当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空返回。
HASH JOIN FULL OUTER HASH JOIN全外连接。当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空、左表补空+右表数据返回。
HASH JOIN SEMI HASH JOIN左半连接。如果左表中满足指定条件的某行数据在右表中出现过,则此行保留在结果集中。Filter in / exists常常改造成SEMI JOIN。
HASH JOIN ANTI HASH JOIN左反半连接。如果左表中满足指定条件的某行数据没有在右表中出现过,则此行数据保留在结果集中。Filter not in / not exists常常改造成ANTI JOIN。
HASH JOIN HASH JOIN内连接。将左表物化,右表通过HASH算法从左表查找满足join条件的数据。仅支持等值查询。
HASH RIGHT OUTER HASH JOIN右外连接。以右表为准,当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将右表数据+左表补空返回。
HASH RIGHT SEMI HASH JOIN右半连接。如果右表中满足指定条件的某行数据在左表中出现过,则此行保留在结果集中。
HASH RIGHT ANTI HASH JOIN右反半连接。如果右表中满足指定条件的某行数据没有在左表中出现过,则此行数据保留在结果集中。

# MERGE JOIN算子

算子名称 含义 适用行模式 适用列模式
MERGE SORT MERGE JOIN的子PLAN,用于参与MERGE JOIN的KEY排序。
MERGE JOIN MERGE JOIN内连接。先将左右表进行排序物化,然后通过JOIN条件的进行merge排序,可以支持等值、大于、大于等于、小于、小于等于的排序。

# NEST LOOP算子

算子名称 含义 适用行模式 适用列模式
NEST LOOPS OUTER NEST LOOP JOIN左外连接。以左表为准,当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空返回。
NEST LOOPS FULL OUTER NEST LOOP JOIN全外连接。当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空、左表补空+右表数据返回。
NEST LOOPS SEMI NEST LOOP JOIN左半连接。如果左表中满足指定条件的某行数据在右表中出现过,则此行保留在结果集中。Filter in / exists常常改造成SEMI JOIN。
NEST LOOPS ANTI NEST LOOP JOIN左反半连接。如果左表中满足指定条件的某行数据没有在右表中出现过,则此行保留在结果集中。Filter not in / not exists常常改造成ANTI JOIN。
NEST LOOPS NEST LOOP 内连接。两表通过循环遍历方式查找满足join条件的数据。

# 辅助功能算子

算子名称 含义 适用行模式 适用列模式
LOAD TABLE CONVENTIONAL 在刚才插入数据的时候,数据库执行了实时统计值收集的动作。
PARALLEL 并行执行的标识,表示此标识以下的算子都为并行执行。 ×
MERGE 数据合并,将多路有序的数据源进行归并成一路数据的算子。
ROW TO COL 行计算转为列计算。
COL TO ROW 列计算转为行计算。
MATERIAL 将输入的数据源物化。