检测到您已登录华为云国际站账号,为了您更好的体验,建议您访问国际站服务网站 https://www.huaweicloud.com/intl/zh-cn
不再显示此消息
LockRows 算子说明 LockRows算子用于锁定查询结果集中的行,以防止其他事务对这些行进行修改或删除。 典型场景 事务中使用SELECT ... FOR SHARE/UPDATE锁定行,防止其他事务对这些行进行修改或删除。 使用FOR SHARE锁定行时,当前事务和其他事务都无法修改或删除锁定行。
Index Scan 算子说明 在索引扫描中,数据库使用语句指定的索引列,通过遍历索引树来检索行。数据库为一个值扫描索引时,发生 n 次 I/O 就能找到其要查找的值,其中 n 即 B-tree索引的高度。Index Scan通常用于检索表数据,数据库以轮流方式先读取索引块,找到
Rownum 算子说明 Rownum算子会生成伪列,它返回一个数字,表示从查询中获取结果的行编号。第一行的Rownum为1。可以使用Rownum关键字对查询结果的行编号进行条件过滤。通常出现在Rownum子句里。 使用Rownum有一定的约束条件: Rownum不可作为别名,以免SQL语句出现歧义。
global_streaming_hadr_rto_and_rpo_stat global_streaming_hadr_rto_and_rpo_stat视图显示流式容灾的主集群和备集群日志流控信息(只可在主集群的CN使用,DN以及备集群上均不可获取到统计信息),如表1所示。 表1 global_str
这一部分主要打印总的执行时间和网络流量,包括了初始化和结束阶段的最大最小执行时间,以及当前语句执行时系统可用内存、语句估算内存等信息。 父主题: 执行计划详解
WindowAgg 算子说明 WindowAgg算子用于处理元组窗口聚合,WindowAgg算子与Agg算子在功能上类似,实现的模式也相似。主要的区别在于,WindowAgg算子处理的元组限定于同一个窗口内,而Agg算子处理的元组是“整个表”(GROUP BY划分)。 典型场景
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。多个表扫描出的多个结果位图之间可再做 BITMAPAND或者BITMAPOR操作,相比于Index Scan还需要对表
Merge Join 算子说明 合并连接(Merge Join)是一种高效的连接方法,它依赖于排序操作。在进行合并连接时,GaussDB会对两个表的连接字段进行排序,然后同步扫描两个表,寻找匹配的行。 Merge Join的时间复杂度为O(n+m), 其中n和m分别代表两个表的行
Index Only Scan 算子说明 Index Only Scan是GaussDB中的一种查询优化技术,它可以通过只扫描索引而不需要访问表数据来提高查询性能。在执行查询时,如果查询条件只涉及到表的某个索引列,就可以使用Index Only Scan来优化查询。Index Only
SubQuery Scan 算子说明 当执行一个包含子查询的语句时,如果优化器RBO没有对它进行优化,它会先执行子查询的查询计划树,然后将子查询的结果传递给上层查询。 典型场景 当语句中包含子查询的时候,会生成SubQuery Scan算子从子查询中获取元组。 示例 示例:查询中带无法下推的子查询。
StartWith Operator 算子说明 层次查询算子,用于执行递归查询操作。层次查询的执行流程是: 由START WITH区域的条件选择初始的数据集,把初始的数据集设为工作集。 只要工作集不为空,会用工作集的数据作为输入,查询下一轮的数据,过滤条件由CONNECT BY区
MergeAppend 算子说明 MergeAppend用于多个有序关系集合的追加,操作类似于Append,只是通过归并的方式对有序关系的集合进行加速运算。MergeAppend以保留排序顺序的方式对子查询结果进行组合,可用于组合表分区中已排序的行。因此,与普通Append不同,
Nested Loop Join 算子说明 嵌套循环连接(Nested Loop Join)是最简单的连接方法,也是所有关系数据库系统中都会实现的连接操作。这种方法的基本思想是“把两个表中的数据两两比较,看是否满足连接条件”。 在GaussDB中,Nested Loop Join的工作原理是,对于外部表(Outer
InitPlan 算子说明 InitPlan是GaussDB的子计划的一部分。GaussDB中子查询计划可分为相关子计划和非相关子计划,相关子计划是指子查询依赖外部查询的行,不可独立于外部查询执行,非相关子计划则相反。在GaussDB中,SubPlan或InitPlan都可以叫做
Sample Scan 算子说明 Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。Sample Scan配合TABLESAMPLE关键字使用,使用方式为[ TABLESAMPLE sampling_method (
Cte Scan 算子说明 CTE(Common Table Expression)是一种临时表达式,Cte Scan用于扫描CTE表达式生成的临时表。 在GaussDB中,可以通过使用with关键字来指定一个或多个CTE,然后在后续的查询中多次使用。 典型场景 当一个查询结果集
Materialize 算子说明 Materialize算子用于缓存子节点返回的结果,对子查询结果进行保存。对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算
Append 算子说明 Append用于多个关系集合的追加,同时处理包含一个或多个子计划的链表。 典型场景 带UNION的SQL语句场景。 带UNION ALL的SQL语句场景。 示例 示例1:带UNION的SQL语句场景。 --数据准备。 gaussdb=# CREATE TABLE
Foreign Scan 算子说明 在GaussDB中,Foreign Scan是一种用于访问外部数据源的扫描器。它可以将外部数据源中的数据作为关系型数据库中的表来处理,从而实现对外部数据源的查询和操作。在GaussDB中,Foreign Scan可以通过扩展API来实现。用户可
Result 算子说明 Result用于处理仅需要一次计算的条件表达式(2 > 1)或者insert中仅有一个VALUES子句,从而控制流程是否可以提前返回,不需要进行后续操作。 典型场景 Result节点用于优化常量条件表达式的查询,条件表达不依赖于扫描的数据,比如:select