查询计划 扫描结点 顺序扫描索引扫描只用索引的扫描位图堆扫描位图索引扫描公共表表达式的扫描自定义扫描外表扫描函数结果扫描子查询扫描表样本扫描行地址扫描行集合扫描工作表扫描连接结点 哈希连接合并连接嵌套连接物化结点 聚合位图与位图或分组哈希物化Result集合运算排序去重窗口聚合控制结点 追加聚集合并聚集Limit锁定行合并追加改表集合投影递归并集结点属性 过滤器索引条件过滤器删除的行数索引出的不满足条件的行数扫描方向堆表访问行数位图堆扫描精确块数位图堆扫描有损块数位图扫描过滤条件哈希条件内行唯一连接过滤器连接类型连接过滤器删除行数合并条件部分模式聚合策略哈希批次哈希桶数原始哈希批次原始哈希桶数内存使用峰值集合操作排序方式排序键排序空间类型排序使用空间启动工作者数计划工作者数单次执行计划 PostgreSQL为每个收到的查询产生一个查询计划。查询计划的结构是一个计划结点的树。最底层的结点是扫描结点:它们从表中返回未经处理的行。不同的表访问模式有不同的扫描结点类型:顺序扫描、索引扫描、位图索引扫描。也还有不是表的行来源,例如VALUES子句和FROM中返回集合的函数,它们有自己的结点类型。如果查询需要连接、聚集、排序、或者在未经处理的行上的其它操作,那么就会在扫描结点之上有其它额外的结点来执行这些操作。并且,做这些操作通常都有多种方法,因此在这些位置也有可能出现不同的结点类型。