Seq Scan

名称

顺序扫描算子

介绍

表中数据存放在数据页面上,顺序扫描算子获取数据页面上的每一行数据返回,所以顺序扫描也叫做全表扫描

拿到一行数据后再通过限定条件去判断是否满足,将满足的行进行投影操作,然后将投影后的数据返回。

举例

--创建环境
create table t1(a int,b int);

insert into t1 values(1,2);
insert into t1 values(1,3);
insert into t1 values(1,5);
insert into t1 values(2,1);

explain analyze select * from t1 where a = 1 and a + b > 3 and abs(b) > 4;
                                         QUERY PLAN
--------------------------------------------------------------------------------------------
 Seq Scan on T1  (cost=0.00..192.32 rows=5 width=8) (actual time=0.05..0.06 rows=1 loops=1)
   Scan Key: (A = 1)
   Scan Filter: ((A + B) > 3)
   Filter: (ABS(B) > 4)
 Planning Time: 0.24 msec
 Execution Time: 0.10 msec
(6 rows)
  • on T1 算子属性,表示顺序扫描的目标表
  • Scan Key 限定条件
  • Scan Filter 限定条件
  • Filter 限定条件

注解

  • Scan Key,Scan Filter,Filter三种条件的过滤顺序按照从上到下的顺序,对于SeqScan来说,他们只是判断的顺序不同,性能上不会有很大差距
  • 扫描算子一定位于算子树的叶节点,所以不存在子算子