#执行算子

在YashanDB中,各类执行算子默认采用单行执行,如需开启批量执行可联系我们的技术支持。

Note:

执行算子采用并行批量执行时会存在额外的(B)标识,例如SELECT STATEMENT(B)表示批量并行执行的查询语句。

# 数据查询算子

算子名称 含义 行/列模式 支持批量执行
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作为限定条件返回表中选取的行数。 行、列
RESULT COLLECTOR 批量执行开启pipeline并行标识。
UNPIVOT 将列旋转为行数据。 ×

# 表扫描算子

算子名称 含义 行/列模式 支持批量执行
TABLE ACCESS FULL 全表扫描。 行、列
TABLE ACCESS BY INDEX ROWID 根据索引查找到对应数据块的ROWID(根据ROWID回表)。 行、列 ×
TABLE ACCESS BY USER ROWID 指定单个ROWID(ROWID = ?ROWID in ('9912:0:0:5108:4', '9912:0:0:5108:8'))访问表中的数据,ROWID的数据格式请查阅ROWID数据格式 行、列 ×
TABLE ACCESS BY ROWID RANGE 指定ROWID的范围(ROWID BETWEEN ... AND ...ROWID > ?)访问表中的多行数据,ROWID的数据格式请查阅ROWID数据格式
TEMP TABLE ACCESS 对共享CTE临时物化区的扫描。 行、列

# 索引扫描算子

算子名称 含义 行/列模式 支持批量执行
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函数优化,只返回一条记录。 行、列 ×
INDEX SKIP SCAN 索引跳跃扫描,跳过索引的前导列,使用索引的非前导列进行索引扫描。 行、列 ×
INDEX SKIP SCAN DESCENDING 按降序方式进行索引跳跃扫描。 行、列 ×
SPATIAL INDEX SCAN RTree索引扫描,仅适用于索引字段的ST_Contains、ST_Intersects等空间关系函数的优化。 ×
BITMAP OR 索引扫描使用位图的方式进行集合表示。 ×

# 分区扫描算子

算子名称 含义 行/列模式 支持批量执行
PART SCAN ITERATOR 一组分区扫描。 行、列
PART SCAN ALL 所有分区扫描。 行、列
PART SCAN SINGLE 单个分区扫描。 行、列
PART 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 ANTI NA 感知空值的HASH JOIN左反半连接。 行、列
HASH JOIN HASH JOIN内连接。将左表物化,右表通过HASH算法从左表查找满足join条件的数据。仅支持等值查询。 行、列
HASH RIGHT OUTER HASH JOIN右外连接。以右表为准,当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将右表数据+左表补空返回。 行、列
HASH RIGHT SEMI HASH JOIN右半连接。如果右表中满足指定条件的某行数据在左表中出现过,则此行保留在结果集中。 行、列
HASH RIGHT ANTI HASH JOIN右反半连接。如果右表中满足指定条件的某行数据没有在左表中出现过,则此行数据保留在结果集中。 行、列
JOIN FILTER CREATE 运行时过滤器的创建端,通常位于连接操作的构建侧。运行时过滤器是一种查询优化技术,主要用于分布式查询执行中减少数据传输量。JOIN FILTER是运行时过滤器的一种重要类型,它在连接操作中动态生成过滤条件,并将这些条件推送到上游操作符以提前过滤数据。 行、列 ×
JOIN FILTER USE 运行时过滤器的使用端,通常位于连接操作的探测侧。运行时过滤器是一种查询优化技术,主要用于分布式查询执行中减少数据传输量。JOIN FILTER是运行时过滤器的一种重要类型,它在连接操作中动态生成过滤条件,并将这些条件推送到上游操作符以提前过滤数据。 行、列 ×

# 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 ANTI NA 感知空值的MERGE JOIN左反半连接。 行、列 ×
MERGE JOIN MERGE JOIN内连接。先将左右表进行排序物化,然后通过JOIN条件的进行merge排序,可以支持等值、大于、大于等于、小于、小于等于的排序。 行、列 ×

# NEST LOOP算子

算子名称 含义 行/列模式 支持批量执行
NESTED LOOPS LEFT OUTER NESTED LOOP JOIN左外连接。以左表为准,当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空返回。 行、列
NESTED LOOPS FULL OUTER NESTED LOOP JOIN全外连接。当左右表满足join指定条件则同时返回左右表数据,如果满足不了,则将左表数据+右表补空、左表补空+右表数据返回。 行、列
NESTED LOOPS SEMI NESTED LOOP JOIN左半连接。如果左表中满足指定条件的某行数据在右表中出现过,则此行保留在结果集中。Filter in / exists常改造成SEMI JOIN。 行、列
NESTED LOOPS ANTI NESTED LOOP JOIN左反半连接。如果左表中满足指定条件的某行数据没有在右表中出现过,则此行保留在结果集中。Filter not in / not exists常改造成ANTI JOIN。 行、列
NESTED LOOPS ANTI NA 感知空值的NESTED LOOP JOIN左反半连接。 行、列
NESTED LOOPS INNER NESTED LOOP内连接。两表通过循环遍历方式查找满足join条件的数据。 行、列
NESTED INDEX LOOPS LEFT OUTER NESTED INDEX LOOPS左外连接。类似NESTED LOOPS LEFT OUTER,区别是右表使用索引扫描。 行、列 ×
NESTED INDEX LOOPS SEMI NESTED INDEX LOOPS左半连接。类似NESTED LOOPS SEMI,区别是右表使用索引扫描。 行、列 ×
NESTED INDEX LOOPS ANTI NESTED INDEX LOOPS左反半连接。类似NESTED LOOPS ANTI,区别是右表使用索引扫描。 行、列 ×
NESTED INDEX LOOPS NESTED INDEX LOOPS 内连接。类似NESTED LOOPS,区别是右表使用索引扫描。 行、列 ×

# 辅助功能算子

算子名称 含义 行/列模式 支持批量执行
LOAD TABLE CONVENTIONAL 在刚才插入数据时,数据库执行了实时统计值收集的动作。 行、列 ×
PX COORDINATOR 单机部署中并行执行的标识,表示此标识以下的算子都为并行执行。 行、列 ×
DISTRIBUTED COORDINATOR 存算一体分布式集群部署中并行执行的标识,表示此标识以下的算子都为并行执行。 行、列 ×
PX REMOTE 表示数据交互包含跨节点的收发。 行、列 ×
PX LOCAL 表示数据交互仅在本地收发。 行、列 ×
MERGE 数据合并,将多路有序的数据源进行归并成一路数据的算子。 行、列 ×
ROW TO COL 行计算转为列计算。 行、列 ×
COL TO ROW 列计算转为行计算。 行、列 ×
MATERIAL 将输入的数据源物化。 行、列 ×
edit-icon
反馈
coperate-icon
coperate
合作
communication-icon
communicate
交流