数据仓库服务 GAUSSDB(DWS)-执行计划算子:扫描算子

时间:2024-12-24 11:19:44

扫描算子

扫描算子用来扫描表中的数据,每次获取一条元组作为上层节点的输入, 存在于查询计划树的叶子节点,它不仅可以扫描表,还可以扫描函数的结果集、链表结构、子查询结果集。常见的扫描算子如下表所示:

表1 扫描算子

算子

含义

场景

SeqScan

顺序扫描

最基本的扫描算子,用于扫描物理表(没有索引辅助的顺序扫描)。

IndexScan

索引扫描

选择条件涉及的属性上建立了索引。

IndexOnlyScan

直接从索引返回元组

索引列完全覆盖结果集列。

BitmapScan(BitmapIndexScan, BitmapHeapScan)

利用Bitmap获取元组

BitmapIndexScan利用属性上的索引进行扫描,返回结果为一个位图;BitmapHeapScan从BitmapIndexScan输出的位图中获取元组。

TidScan

通过元组tid获取元组

  1. WHERE conditions(like CTID = tid or CTID IN (tid1, tid2, …)) ;
  2. UPDATE/DELETE … WHERE CURRENT OF cursor;

SubqueryScan

子查询扫描

以另一个查询计划树(子计划)为扫描对象进行元组的扫描。

FunctionScan

函数扫描

FROM function_name

ValuesScan

扫描values链表

对VALUES子句给出的元组集合进行扫描。

ForeignScan

外部表扫描

查询外部表。

CteScan

CTE表扫描

扫描SELECT查询中用WITH子句定义的子查询。

support.huaweicloud.com/devg-dws/dws_04_0402.html