postgresql获取真正的execution plan

analyze会真正执行,除了select语句,最好放在一个事务中运行,然后rollback.

BEGIN;

EXPLAIN ANALYZE UPDATE ...;

ROLLBACK;

常用方式如下:

EXPLAIN (ANALYZE, BUFFERS, TIMING) SELECT ...;

sql 复制代码
ccc=# select * from t1;
 id | name 
----+------
  1 | aaa
  2 | bbb
  3 | ccc
  4 | ddd
(4 rows)

ccc=# begin;
BEGIN
ccc=*# EXPLAIN (ANALYZE, BUFFERS, TIMING) update t1 set name='yyy' where id=3;
                                              QUERY PLAN                                               
-------------------------------------------------------------------------------------------------------
 Update on t1  (cost=0.00..21.25 rows=0 width=0) (actual time=0.113..0.114 rows=0.00 loops=1)
   Buffers: shared hit=3 dirtied=1
   ->  Seq Scan on t1  (cost=0.00..21.25 rows=4 width=64) (actual time=0.012..0.014 rows=1.00 loops=1)
         Filter: (id = 3)
         Rows Removed by Filter: 3
         Buffers: shared hit=1
 Planning:
   Buffers: shared hit=3 read=6
 Planning Time: 2.737 ms
 Execution Time: 2.241 ms
(10 rows)

ccc=*# rollback;
ROLLBACK
ccc=# select * from t1;
 id | name 
----+------
  1 | aaa
  2 | bbb
  3 | ccc
  4 | ddd
(4 rows)

ccc=#

调试执行计划时可以临时enable/disable一些选项,详细列表见:

https://www.postgresql.org/docs/current/runtime-config-query.html

-- Plan with nested loop allowed (default)

EXPLAIN (ANALYZE, FORMAT JSON)

SELECT ... ;

-- Compare with nested loop discouraged

BEGIN;

SET LOCAL enable_nestloop = off;

EXPLAIN (ANALYZE, FORMAT JSON)

SELECT ... ;

COMMIT;

相关推荐
冉冰学姐6 小时前
基于ssm的技能比赛报名管理系统29817vn0(程序+源码+数据库+调试部署+开发环境)带论文文档1万字以上,文末可获取,系统界面在最后面
java·数据库·spring·ssm 框架应用
小小码农Come on8 小时前
Qt Creator + MSVC 2022 64bit 配置 Dump 文件生成与分析流程
数据库·qt
qiuyuyiyang8 小时前
【MySQL】环境变量配置
数据库·mysql·adb
jgyzl10 小时前
2026.3.11MyBatis-Plus基本使用与思考
java·数据库·mybatis
RDCJM10 小时前
【MySQL】在MySQL中STR_TO_DATE()以及其他用于日期和时间的转换
android·数据库·mysql
vanvivo10 小时前
redis 使用
数据库·redis·缓存
加成BUFF10 小时前
解决MySQL/MariaDB忘记root密码:完整重置教程(XAMPP/Windows版)
数据库·mysql·xampp
杰克尼10 小时前
苍穹外卖--day10
java·数据库·spring boot·mybatis·notepad++
dreamread10 小时前
完美解决phpstudy安装后mysql无法启动
数据库·mysql
小江的记录本10 小时前
【SQL】多表关系与冷热数据(全维度知识体系)
数据库·sql·mysql·数据库开发·数据库架构