PostgreSql的执行计划1--获取执行计划

本文深入探讨了SQL执行计划的获取方式,通过Explain关键字,详细解释了analyze、timing、verbose、buffers和format等选项的功能,并提供了具体的执行计划示例,展示了不同选项下执行计划的展示方式。

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

获取执行计划的方式是由Explain关键字来执行的,Explain的用法是:
EXPLAIN [ ( option [, ...] ) ] statement
其中option是值可以包含:
analyze,timing,verbose,buffers,format
     option的含义:其中analyze 为true时,是实际执行了statement,所以在执行update,delete等语句时使用analyze需要小心,最好是包含在一个事务中,如:
begin;
   explain analyze statement;
--可以rollback,也可以commit
End;
timing的含义:显示执行的时间,在添加这个选项时必须analyze是true;
verbose的含义:输出的字段显示;
buffers的含义:显示有多少数据是能在共享缓存中获取;
format的含义:设置输出的执行计划的格式;
示例1:
explain select * from mytest9;

                       QUERY PLAN
---------------------------------------------------------
"Seq Scan on mytest9  (cost=0.00..184.00 rows=10000 width=34)"
不带任何option的执行计划显示。
示例2:
   explain analyze  select * from mytest9;
QUERY PLAN
---------------------------------------------------------
"Seq Scan on mytest9  (cost=0.00..184.00 rows=10000 width=34) (actual time=0.022..2.195 rows=10000 loops=1)"
"Total runtime: 2.884 ms"
使用了analyze后会显示一些运行时的参数。
示例3:
explain (analyze true,timing,verbose,buffers,format json) select * from mytest9;

QUERY PLAN
---------------------------------------------------------
"[
  {
    "Plan": {
      "Node Type": "Seq Scan",
      "Relation Name": "mytest9",
      "Schema": "public",
      "Alias": "mytest9",
      "Startup Cost": 0.00,
      "Total Cost": 184.00,
      "Plan Rows": 10000,
      "Plan Width": 34,
      "Actual (...)"
显示的是JSON格式的执行计划。
示例4:
explain (analyze true,timing,verbose,buffers,format text) select * from mytest9;

QUERY PLAN
---------------------------------------------------------
"Seq Scan on public.mytest9  (cost=0.00..184.00 rows=10000 width=34) (actual time=0.018..2.516 rows=10000 loops=1)"
"  Output: id, name_1, name_2, name_3"
"  Buffers: shared hit=84"
"Total runtime: 3.497 ms"
format参数改为text时,展现了输出的字段,share buffers中命中的个数,以及执行的时间,这个时间是真实的
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值