Tid Scan¶
名称¶
Tid扫描算子
介绍¶
Tid实际上记录了一行数据(元组)的物理地址,可通过Tid值直接从磁盘获得数据,是访问单行数据的最快方式。
作为一种特殊的扫描方式,在查询时,只有谓词中有rowid且指定为单值或者使用游标定位更新时才会进行Tid扫描
举例¶
--清理环境
DROP TABLE t1 CASCADE;
--创建环境
CREATE TABLE t1(a int);
INSERT INTO t1 VALUES(1);
INSERT INTO t1 VALUES(2);
INSERT INTO t1 VALUES(3);
--查询行号rowid
SELECT ROWID FROM t1;
ROWID
-----------------
30698
281474976741354
562949953452010
EXPLAIN ANALYZE SELECT * FROM t1 WHERE ROWID = 30698;
QUERY PLAN
------------------------------------------------------------------------------------------
Tid Scan on T1 (cost=0.00..1.01 rows=1 width=4) (actual time=0.02..0.02 rows=1 loops=1)
Filter: ("ROWID" = 30698::bigint)
Planning Time: 0.16 msec
Execution Time: 0.13 msec
(4 rows)
- on T1 算子属性,表示Tid扫描的目标表
- Filter 限定条件
--清理环境
DROP TABLE t1 CASCADE;
--创建环境
CREATE TABLE t1(a int);
INSERT INTO t1 VALUES(1);
INSERT INTO t1 VALUES(2);
INSERT INTO t1 VALUES(3);
--创建游标
DECLARE c1 SCROLL CURSOR FOR SELECT * FROM t1;
OPEN c1;
FETCH from c1;
EXPLAIN ANALYZE DELETE FROM t1 WHERE CURRENT OF c1;
QUERY PLAN
------------------------------------------------------------------------------------------
Tid Scan on T1 (cost=0.00..1.01 rows=1 width=8) (actual time=0.04..0.04 rows=1 loops=1)
Filter: ("ROWID" = 281474976727594::bigint)
Planning Time: 0.12 msec
Execution Time: 0.12 msec
(4 rows)
CLOSE c1;
--清理环境
DEALLOCATE c1;
DROP TABLE t1 CASCADE;