PG数据库执行计划
在TEST数据库下创建一张explainTest表,包括num和name两个字段,num为主键。并插入1000条数据。
TEST=# explain (analyze true, buffers true) select * from explainTest where num > 900;
TEST=# insert into explainTest select generate_series(1,1000),'zhangsan';
INSERT 0 1000
- 直接查询全表,并用默认参数值输出查询计划:
TEST=# explain select * from explainTest;
QUERY PLAN
----------------------------------------------------------------
Seq Scan on explaintest (cost=0.00..16.00 rows=1000 width=13)
(1 行记录)
说明:
1. Seq Scan 表示顺序扫描全表。
2. cost=0.00..16.00,表示启动成本为0,执行完成的成本为16。成本大小和配置有关,默认成本配置如下:
seq_page_cost = 1.0 # 顺序扫表一个数据页,cost值为1
random_page_cost = 4.0 # 随机扫描一个数据页,cost只为4
cpu_tuple_cost = 0.01 # 处理一个数据行的cp