1 执行计划主要内容
执行计划里每个节点主要内容包括:
执行动作,及其附加条件,比如索引扫描,索引条件等
估算成本:启动cost、总体cost、估计返回的行数和平均宽度,如果开启了Analyze选项,还会返回:实际成本:启动cost、总体cost实际返回的行数,节点循环执行次数
我们以下例来说明,执行计划输出结果各部分的内容:

1、执行动作:
Index Scan:表示索引扫描
krds_instance_pkey:使用的索引名
krds_instance:访问的表名
整句话表示:访问krds_instance表的时候,使用的是索引扫描,扫描的索引是krds_instance_pkey。
2、成本估算
(cost=0.14…8.16 rows=1 width=7845)
cost=0.14…8.16
0.14 启动成本,也就是说返回第一行需要多少cost
8.16 表示返回所有的数据的成本。这两个数值用…分开
rows=1
表示该查询会返回1行记录。
width=7845
表示每行平均宽度为7845字节。
在执行计划里,每一步的cost值都传给了上一层,也就是说每一个cost值代表的是在此步以下所有操作的代价总和。
3、实际成本
(actual time=0.018…0.019 rows=0 loops=1)
actual time=0.018…0.019
表示实际的启动时间为0.018,实际的运行时间也为0.019。
rows=0
表示实际查询返回了0行记录(没有查询到)。
loops=1
表示该索引扫描只执行了1次。
4、索引条件
该句表示当前执行的索引扫描(Index Scan)使用的索引条件为:Index Cond: (id = ‘1’::numeric)
5、计划和执行时间
Planning Time: 0.180 ms
Execution Time: 0.072 ms
analyze的explain语句特有。表示生成执行计划用时0.180 ms,真正执行查询用时0.072 ms。
2执行计划执行顺序

2.1 计划节点
执行计划内部是树状结构,里面包含的节点主要有5类:扫描节点(Scan Node),连接节点(Join Node),物化节点(Materialization Node),控制节点(Control Node),并行节点(Parallel Node)。
- 扫描节点 :
顺序扫描(Seq scan)
索引扫描(Index scan)
位图扫描(Bitmap scan)
TID扫描(TID scan)
覆盖索引扫描(Index only scan) - 连接节点:
嵌套循环连接(NestLoop join)
哈希连接(Hash join)
归并连接(Merge join) - 物化节点:
物化节点(Material)
分组节点(Group)
排序节点(Sort)
去重节点(Unique) - 控制节点:
Result节点
BitmapAnd/BitmapOr节点
Append节点
RecursiveUnion节点 - 并行节点:
Gather/GatherMerge
并行全表扫描(Parallel SeqScan)
并行hash(Parallel Hash)
并行连接(Parallel HashJoin/MergeJoin)
并行聚集(Partial/Finalize Aggregate/HashAggregate/GroupAggregate)
并行Append(Parallel Append)
并行UNION(Parallel UNION)




