#执行算子

# 数据查询算子

算子名称 含义 适用行模式 适用列模式
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 窗口函数标识,可以同时进行分组和排序,基于排序做分组,且会返回原始信息而非分组后(一组只有一条)的信息。
WINDOW HASH 窗口函数标识,可以同时进行分组和排序,基于哈希做分组,且会返回原始信息而非分组后(一组只有一条)的信息。 ×
WINDOW NOSORT 窗口函数标识,该算子对有序数据进行分组并计算窗口函数返回值,且会返回原始信息而非分组后(一组只有一条)的信息。如果下层算子提供的数据顺序已经满足窗口函数所需的排序要求,则可以选用该算子。
FIRST ROW 获取下层扫描算子得到的第一行记录。
COUNT 返回表中选取的行数。
COUNT STOPKEY 使用ROWNUM作为限定条件返回表中选取的行数。

# 表扫描算子

算子名称 含义 适用行模式 适用列模式
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 索引范围扫描。当扫描对象是唯一索引时,谓词条件必须是范围查询(between、<、>);扫描对象是非唯一性索引时,没有限制。索引范围扫描可能返回多条记录。
INDEX RANGE SCAN DESCENDING 按降序方式进行索引范围扫描。
INDEX FULL SCAN 索引全扫描,扫描目标索引所有叶子块的所有索引行。
INDEX FULL SCAN DESCENDING 按降序方式进行索引全扫描。
INDEX FAST FULL SCAN 索引快速全扫描,类似于索引全扫描,但扫描结果不是有序的。因为是物理读,不是逻辑读索引,同时可以并行读索引。
INDEX FULL SCAN (MIN/MAX) 索引全扫描取最小/最大。不分组情形下,针对索引字段的min、max函数优化,只返回一条记录。
INDEX RANGE SCAN (MIN/MAX) 索引范围扫描取最小/最大。不分组情形下,针对索引字段的min、max函数优化,只返回一条记录。
SPATIAL INDEX SCAN RTREE索引扫描,仅适用于索引字段的ST_Contains、ST_Intersects等空间关系函数的优化。 ×
BITMAP OR 索引扫描使用位图的方式进行集合表示。 ×

# 分区扫描算子

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

# AC扫描算子

算子名称 含义 适用行模式 适用列模式
AC SCAN AC扫描。 ×
EXPAND 展开AC扫描的数据。 ×

# 分组/排序算子

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

# 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 OUTER MERGE JOIN左外连接。支持等值、大于、大于等于、小于、小于等于作为JOIN条件进行排序。当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空返回。
MERGE JOIN FULL OUTER MERGE JOIN全外连接。支持等值、大于、大于等于、小于、小于等于作为JOIN条件进行排序。当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空、左表补空+右表数据返回。
MERGE JOIN SEMI MERGE JOIN左半连接。如果左表中满足指定条件的某行数据在右表中出现过,则此行保留在结果集中。Filter in / exists常改造成SEMI JOIN。
MERGE JOIN ANTI MERGE JOIN左反半连接。如果左表中满足指定条件的某行数据没有在右表中出现过,则此行数据保留在结果集中。Filter not in / not exists常改造成ANTI JOIN。
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 在刚才插入数据时,数据库执行了实时统计值收集的动作。
PX COORDINATOR 单机部署中并行执行的标识,表示此标识以下的算子都为并行执行。
DISTRIBUTED COORDINATOR 分布式部署中并行执行的标识,表示此标识以下的算子都为并行执行。
PX REMOTE 表示数据交互包含跨节点的收发。
PX LOCAL 表示数据交互仅在本地收发。
MERGE 数据合并,将多路有序的数据源进行归并成一路数据的算子。
ROW TO COL 行计算转为列计算。
COL TO ROW 列计算转为行计算。
MATERIAL 将输入的数据源物化。