1、explain缺省输出格式的查询计划示例如下:
gbase> explain select * from
t1 inner join t2 on t1.b=t2.b;
+----+-------------+-------------+-------+-----------+
| ID | MOTION | OPERATION | TABLE | CONDITION |
+----+-------------+-------------+-------+-----------+
| 02 | [RESULT] |
INNER JOIN | | (b = b) |
| | |
Step | <00> |
|
| | |
Step | <01> |
|
| 01 | [REDIST(b)] | Table
| t2[a] | |
| 00 | [REDIST(b)] | Table
| t1[a] | |
+----+-------------+-------------+-------+-----------+
5 rows in set (Elapsed:
00:00:00.03)
其中各部分含义为:
|
列 |
解释 |
|
ID |
计划的步骤: 从00开始执行,也就是从显示界面的下方向上执行 |
|
MOTION |
该步骤的执行结果集的处理方式: RESULT:结果发送到客户端 GATHER:结果发送到汇总节点 REDIST(…):结果HASH重分布,括号中为计算HASH的列,如果超长则截断为两个点 NO REDIST:结果直接保存到对应的数据分片,不进行重分布 BROADCAST:结果拉复制表 RAND REDIST:结果随机分布到所有节点 SCALAR N:结果为标量,N为标量子查询的编号,如果条件中有引用,则使用&xNx&方式引用 |
|
OPERATION |
某个步骤的具体操作: SCAN:单表扫描,并使用条件过滤数据; Table:单表,没有过滤条件; SubQueryN:子查询,N为自动编号; Step:使用前一个Step的结果; INNER/LEFT/FULL JOIN:连接操作; WHERE:子查询的WHERE条件; GROUP:分组操作; ORDER:排序操作; LIMIT:计算LIMIT,OFFSET; AGG:distinct,聚集操作; UNION/UNION ALL/MINUS/INTERSECT:UNION操作; 对于每个步骤(ID列不为空的为一个步骤)OPERATION每层有1个空格的缩进。 |
|
TABLE |
OPERATION涉及到的表,只显示别名和属性,超长截断为两个点; HASH分布表:中括号中显示HASH列; 复制表:显示[REP]; 随机分布表:显示[DIS]; Nocopies随机分布表:显示[NOCPS]; Nocopies HASH分布表:显示[NOCPS,HASH列]; 子查询:OPERATION列显示SubQueryN,其中N为数字,用来区分不同的子查询; 某个步骤的结果:OPERATION列显示为Step,本列显示为<N>其中N为用到的步骤的第一列ID,表示该步骤的结果; |
|
CONDITION |
显示操作的条件,例如FILTER的单表条件,JOIN的连接条件,GROUP BY,ORDER BY,LIMIT的内容。 如果某个条件可能使用索引,会在有索引的列后进行标注,例如: WHERE t1.a{S} > 10 表示可能使用t1.a的智能(Smart)索引 WHERE t1.a{H} = 10 表示可能使用t1.a的HASH索引 WHERE t1.a{H}= t2.b 表示可能使用t1.a的HASH索引 WHERE t1.a{H} = t2.b{H}表示可能使用t1.a和t2.b的HASH索引 WHERE contains(t1.a{F}…) 表示可能使用t1.a的全文(Full Text)索引 只有物理表的单列包含索引, 物理表单列的>,<,>=,<=,=可能使用智能索引 物理表单列的=可能使用HASH索引,包括等于常量和等值JOIN 物理表的contains函数可能使用全文索引 |
2、 执行计划部分主要内容与查询计划一致,同时增加了一些其它属性,如下表:
|
属性 |
含义 |
|
isQueryFinalStep |
是否查询步骤的最后一步 |
|
DestType |
目标类型:1为所有节点,2为汇总节点,3为某个节点(说明使用该目标表的SQL全部使用复制表)其它没有使用 |
|
isProducer |
是否生产者:0不是,1是 |
|
isConsumer |
是否消费者:0不是,1是 |
|
producerDistID |
生产者ditribution ID |
|
consumerDistID |
消费者distribution ID |
|
isSingleHashNode |
是否单节点HASH优化,0不是,1是 |
|
isHashRedist |
是否HASH重分布步骤,0不是,1是 |
|
Hash Redist Indexes |
HASH重分布的表达式下标 |
|
isGroupHashRedist |
未使用 |
|
isAllTableAreHashTmpDist |
是否所有源表都是HASH重分布临时表。0不是,1是 |
|
isExistsHashReditTable |
是否源表中存在HASH重分布临时表。0不是,1是 |
|
queryString |
该步骤的SQL |
|
targetTable |
目标表 |
|
targetSchema |
目标表建表语句 |
|
[Step] DropList |
该步骤执行完后可以删除的临时表列表 |




