索引可以通过简单的索引扫描或位图索引扫描进行使用。
Seq Scan 算子说明 Seq Scan算子是所有扫描算子中具有普适性的一种,这个算子本质上的原理为对表按某个方向(前向/后向)进行顺序扫描,然后返回符合筛选条件的所有行。 典型场景 表无索引,需要对表进行扫描操作。 表有索引,但需要对表大部分数据进行扫描操作。
Seq Scan 算子说明 Seq Scan算子是所有扫描算子中具有普适性的一种,这个算子本质上的原理为对表按某个方向(前向/后向)进行顺序扫描,然后返回符合筛选条件的所有行。 典型场景 表无索引,需要对表进行扫描操作。 表有索引,但需要对表大部分数据进行扫描操作。
Seq Scan 算子说明 Seq Scan算子是所有扫描算子中具有普适性的一种,这个算子本质上的原理为对表按某个方向(前向/后向)进行顺序扫描,然后返回符合筛选条件的所有行。 典型场景 表无索引,需要对表进行扫描操作。 表有索引,但需要对表大部分数据进行扫描操作。
索引可以通过简单的索引扫描或位图索引扫描进行使用。
Seq Scan 算子说明 Seq Scan算子是所有扫描算子中具有普适性的一种,这个算子本质上的原理为对表按某个方向(前向/后向)进行顺序扫描,然后返回符合筛选条件的所有行。 典型场景 表无索引,需要对表进行扫描操作。 表有索引,但需要对表大部分数据进行扫描操作。
图1 分区表示例图 如果使用普通表设计,查询时需要进行全表扫描(Full Table Scan)。而如果以月份为分区键重新设计该表,全表扫描会被优化为分区扫描。当表内数据量很大且历史周期较长时,通过减少扫描的数据量,性能提升将非常显著,如图2所示。
TID Scan 通过TupleID扫描表。 Index Ctid Scan 通过Ctid上的索引对表进行扫描。 CTE Scan CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。
TID Scan 通过TupleID扫描表。 Index Ctid Scan 通过Ctid上的索引对表进行扫描。 CTE Scan CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。
TID Scan 通过TupleID扫描表。 Index Ctid Scan 通过Ctid上的索引对表进行扫描。 CTE Scan CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。
TID Scan 通过TupleID扫描表。 Index Ctid Scan 通过Ctid上的索引对表进行扫描。 CTE Scan CTE对子查询的操作进行评估并将查询结果临时存储,相当于一个临时表。CTE Scan算子对该临时表进行扫描。
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。
对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算子来缓存子查询的结果,从而大大减少扫描的执行时间。
对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算子来缓存子查询的结果,从而大大减少扫描的执行时间。
对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算子来缓存子查询的结果,从而大大减少扫描的执行时间。
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。
Bitmap 算子说明 Bitmap Index Scan,位图索引扫描,该算子的作用为用索引扫描的方式,将过滤出的符合条件的元组的tid形成一张位图并向上返回。
对于需要重复多次扫描的子节点(特别是扫描结果每次都相同时)可以减少执行代价。 典型场景 当查询语句涉及子查询,需要多次查询同一批数据时,优化器会选择Materialize算子来缓存子查询的结果,从而大大减少扫描的执行时间。
Sample Scan 算子说明 Sample Scan是一种扫描表的方式,它可以在查询过程中随机地从表中抽取一部分数据进行查询,而不是扫描整个表。