PostgreSQL explain简单示例

本文通过实例解析了PostgreSQL中的explain输出结果,介绍了顺序扫描、索引扫描等概念,并详细解释了cost、rows和width等参数的具体含义。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

作者:瀚高PG实验室 (Highgo PG Lab)

explain输出结果解释

下面是一个最简单的explain示例

highgo=# explain   select * from emp;

                       QUERY PLAN

--------------------------------------------------------

 Seq Scan on emp  (cost=0.00..15.60 rows=560 width=116)

(1 行记录)

以上输出结果中“Seq Scan on emp”表示顺序扫描emp表,顺序扫描即全表扫描。

(cost=0.00..15.60 rows=560 width=116)”分为三部分,解释如下

“ (cost=0.00..15.60”中“cost=”后面的两个数字,第一个数字“0.00”表示启动成本,表示返回第一行需要的cost值;第二个数字表示返回所有数据需要的cost值。

“rows=560”表示访问的行数,此处应该不是返回的行数,而是为了返回查询的行,postgresql需要访问的行数,验证如下:

highgo=# explain   select * from emp where empno=7499;

                              QUERY PLAN

----------------------------------------------------------------------

 Index Scan using emp_pkey on emp(cost=0.15..8.17 rows=1width=116)

   Index Cond: (empno = 7499)

(2 行记录)

highgo=# explain   select * from emp1 where empno=7499 ;

                      QUERY PLAN

-------------------------------------------------------

 Seq Scan on emp1  (cost=0.00..17.00 rows=3 width=116)

Filter: (empno = 7499)

(2 行记录)

highgo=# select * from emp1 where empno=7499 ;

 empno | ename |   job    | mgr  |      hiredate       |   sal   |  comm  |deptno

-------+-------+----------+------+---------------------+---------+--------+--------

  7499 | ALLEN | SALESMAN | 7698 | 1981-02-20 00:00:00 | 1600.00 | 300.00 |     30

(1 行记录)

以上结果中emp及emp1完全相同,emp有索引,emp1没有索引,返回同一条数据时,走索引时rows=1,走全表扫描时rows=3,两个查询返回的行数均为1行,说明此处的返回的行数应该不是真实的行数。

width=116,表示每行平均宽度为116字节。

什么是“cost”?“cost”描述一条sql语句执行的代价是多少,默认情况下取值如下:

顺序扫描一个数据库,cost值为1;随机扫描一个数据库,cost值为4;处理一个数据行的CPU,cost值为0.01;处理一个索引行的CPU,cost值为0.005;每个操作符的CPU代价为0.0025。

PostgreSQL根据上面类型计算出每条SQL的执行计划,结果不是很准确,但在多数情况下够用。

使用explain时,postgresql并不会真正执行SQL。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值