Node Type of Explain Tree
PostgreSQL
数据访问
SEQ SCAN: 通过顺序扫描输入记录集来查找相关记录,顺序扫描( 与索引扫描不同)执行单个读取操作。 CTE SCAN: 对公共表达式(CTE)查询结果执行顺序扫描。请注意,CTE的结果被计算并临时存储(Materialization)。 INDEX SCAN: 根据索引查找相关记录。索引扫描执行两次读取操作:一次读取索引,另一次从表中读取实际值。
INDEX ONLY SCAN: 根据索引查找相关记录。仅索引扫描从索引中执行读取操作,无需访问相应的数据表。 BITMAP HEAP SCAN: 在位图索引扫描返回的磁盘页中搜索相关行。
表关联
NESTED LOOP: 通过循环遍历第一个记录集中的每个记录,尝试在第二个记录集中找到匹配项,返回所有匹配的记录。
MERGE JOIN: 通过首先对它们进行排序(使用连接键)来合并两个记录集。
HASH JOIN: 通过对其中一个记录集进行哈希(使用哈希扫描)来连接两个记录集。
分组
AGGREGATE: 根据GROUP BY或聚合函数(如sum())将记录分组。
HASHAGGREGATE: 根据GROUP BY或聚合函数(如sum())将记录分组;哈希聚合首先使用哈希按键组织记录。
排序
SORT: 根据指定的排序键对记录集进行排序。
Limit
LIMIT: 从记录集中返回指定数量的行。
辅助操作
BITMAP INDEX SCAN: 使用位图索引(每页使用1位的索引)查找所有相关页面。此节点的结果传递给位图堆扫描。
MEMOIZE: 用于缓存嵌套循环的内部部分的结果。当当前参数的结果已经在缓存中时,它避免执行底层节点。
HASH: 从输入记录集中的记录生成一个哈希表。哈希表被哈希连接使用。
并行执行
GATHER: 以未定义的顺序读取并汇总并行worker的结果。
GATHER MERGE: 读取并保留并行worker的结果,保持任何排序。
MySQL
TABLE SCAN: 通过顺序扫描输入记录集来查找相关记录。当从表中读取时,Table扫描(与索引扫描不同)执行单个读取操作(仅读取表)。
INDEX LOOKUP: 根据索引查找相关记录。索引扫描执行两次读取操作:一次读取索引,另一次从表中读取实际值。
COVERING INDEX SCAN: 根据索引查找相关记录。仅索引扫描从索引中执行单个读取操作,不从相应的表中读取。
NESTED LOOP JOIN: 通过循环遍历第一个记录集中的每个记录,尝试在第二个记录集中找到匹配项来合并两个记录集。返回所有匹配的记录。
GROUP AGGREGATE: 根据GROUP BY或聚合函数(如sum())将记录分组在一起。哈希聚合首先使用哈希按键组织记录。