当前位置: 首页 > news >正文

PostgreSQL查看sql的执行计划

PostgreSQL查看sql的执行计划

基础信息
OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo)
DB版本:16.2
pg软件目录:/home/pg16/soft
pg数据目录:/home/pg16/data
端口:5777

在PostgreSQL中,查看SQL查询的执行计划是性能调优和问题诊断的重要步骤。PostgreSQL提供了一个叫做EXPLAIN的命令,可以让你查看查询的执行计划。通过EXPLAIN命令,你可以看到查询将如何执行,包括访问表的方法和使用的索引,预计的执行成本等。

使用EXPLAIN命令

EXPLAIN命令有几种变体,你可以根据需要选择使用。

  1. 基本形式

    这会展示查询的执行计划,但不会执行查询:

    EXPLAIN SELECT * FROM your_table WHERE condition;
    
  2. 带有分析

    这会展示执行计划并实际执行查询,提供实际执行时间等详细信息:

    EXPLAIN ANALYZE SELECT * FROM your_table WHERE condition;
    
  3. 可视化格式

    这个选项将结果格式化为更易读的文本树状结构(在PostgreSQL 13及以上版本中可用):

    EXPLAIN (FORMAT JSON) SELECT * FROM your_table WHERE condition;
    

    或者:

    EXPLAIN (FORMAT YAML) SELECT * FROM your_table WHERE condition;
    
  4. 其他有用参数

    • BUFFERS: 显示缓冲区使用情况。
    • VERBOSE: 提供更详细的信息。
    • COSTS: 显示执行成本(默认启用)。
    • TIMING: 显示每个操作消耗的时间(EXPLAIN ANALYZE中默认启用)。

    示例:

    EXPLAIN (ANALYZE, BUFFERS) SELECT * FROM your_table WHERE condition;
    

输出解释

EXPLAINEXPLAIN ANALYZE 的输出通常包含以下信息:

  • Node Type: 表示执行计划的每个节点的类型,如Seq Scan(顺序扫描)、Index Scan(索引扫描)等。
  • Cost: 预估的开始和结束成本,单位是cost,主要用来比较不同的查询计划。
  • Rows: 预估返回的行数。
  • Width: 每行的预估字节宽度。
  • Actual Time: 实际执行的时间(仅在EXPLAIN ANALYZE中出现)。
  • Loops: 循环次数(仅在EXPLAIN ANALYZE中出现)。

使用注意事项

  • 测试环境: EXPLAIN ANALYZE会实际执行查询,因此应在测试环境或在不影响生产的情况下使用。
  • 缓存影响: 多次执行同一查询可能会因为数据缓存导致不准确的分析结果。在分析前重启数据库或清除缓存可能会有所帮助。
  • 复合查询: 对复杂查询或涉及多个表的查询,通常需要更详细的执行计划分析,查看各个步骤的执行成本和时间。
示例 1:基本形式

查询:

postgres=# SELECT * FROM t2 WHERE id = '99';id |  name   
----+---------99 | haha_99
(1 row)

执行计划:

postgres=# EXPLAIN SELECT * FROM t2 WHERE id = '99';QUERY PLAN                            
------------------------------------------------------------------Index Scan using idx_t2 on t2  (cost=0.28..8.29 rows=1 width=12)Index Cond: (id = 99)
(2 rows)

经过格式化的执行计划

postgres=# EXPLAIN (FORMAT YAML) SELECT * FROM t2 WHERE id = '99';QUERY PLAN           
-------------------------------- Plan:                      +Node Type: "Index Scan"  +Parallel Aware: false    +Async Capable: false     +Scan Direction: "Forward"+Index Name: "idx_t2"     +Relation Name: "t2"      +Alias: "t2"              +Startup Cost: 0.28       +Total Cost: 8.29         +Plan Rows: 1             +Plan Width: 12           +Index Cond: "(id = 99)"
(1 row)postgres=# 
示例 2:带有分析信息

查询:

postgres=# EXPLAIN ANALYZE SELECT * FROM t2 WHERE id = '99';QUERY PLAN                                                 
------------------------------------------------------------------------------------------------------------Index Scan using idx_t2 on t2  (cost=0.28..8.29 rows=1 width=12) (actual time=0.014..0.015 rows=1 loops=1)Index Cond: (id = 99)Planning Time: 0.063 msExecution Time: 0.029 ms
(4 rows)

通过分析这些信息,你可以更加了解查询的性能瓶颈,并做出相应的优化建议,例如添加索引、更改查询结构等。

谨记:心存敬畏,行有所止。

相关文章:

PostgreSQL查看sql的执行计划

PostgreSQL查看sql的执行计划 基础信息 OS版本:Red Hat Enterprise Linux Server release 7.9 (Maipo) DB版本:16.2 pg软件目录:/home/pg16/soft pg数据目录:/home/pg16/data 端口:5777在PostgreSQL中,查看…...

macOS Ventura 13如何设置定时重启(命令行)

文章目录 macOS Ventura 13如何设置定时重启(命令行)前言具体设置步骤及命令解释其他 macOS Ventura 13如何设置定时重启(命令行) 前言 由于升级 macOS 13 Ventura 之后,之前在节能里面通过鼠标点击设置开机关机的方法不能用了,现在只能用命令设置开机…...

【sass简介以及如何安装使用】

Sass(Syntactically Awesome Stylesheets)是一个层叠样式表(CSS)预处理器,它扩展了CSS的语法,并增加了许多有用的功能,如变量、嵌套、混合(Mixin)、继承以及模块化的结构…...

Git版本控制工具的原理及应用详解(四)

本系列文章简介: 随着软件开发的复杂性不断增加,版本控制成为了开发团队中不可或缺的工具之一。在过去的几十年里,版本控制工具经历了各种发展和演变,其中Git无疑是目前最受欢迎和广泛应用的版本控制工具之一。 Git的出现为开发者…...

AI图书推荐:ChatGPT全面指南—用AI帮你更健康、更富有、更智慧

你是否在努力改善你的健康? 你是否长期遭受财务困难? 你想丰富你的思想、身体和灵魂吗? 如果是这样,那么这本书就是为你准备的。 《ChatGPT全面指南—用AI帮你更健康、更富有、更智慧》(CHATGPT Chronicles AQuick…...

C++ | Leetcode C++题解之第92题反转链表II

题目: 题解: class Solution { public:ListNode *reverseBetween(ListNode *head, int left, int right) {// 设置 dummyNode 是这一类问题的一般做法ListNode *dummyNode new ListNode(-1);dummyNode->next head;ListNode *pre dummyNode;for (i…...

【管理咨询宝藏99】离散制造智能工厂战略规划方案

本报告首发于公号“管理咨询宝藏”,如需阅读完整版报告内容,请查阅公号“管理咨询宝藏”。 【管理咨询宝藏99】离散制造智能工厂战略规划方案 【格式】PDF版本 【关键词】智能制造、先进制造业转型、数字化转型 【核心观点】 - 推进EHS、品质一致性、生…...

java8 Stream使用中的一些实践

文章目录 使用Stream将List转换为Map时key冲突问题使用Stream时得到List的size为不为0,元素Object为null问题 使用Stream将List转换为Map时key冲突问题 如下: 把userList转换为userMap id为key user 为value 由于user2和user3的id相同,所以会…...

入门篇:Kafka基础知识·

目录 一、Kafka简介 二、Kafka核心组件 三、Kafka安装与配置 1.下载与解压 2.配置环境变量 3.配置server.properties 4.启动Kafka服务 四、Kafka基本操作 1.创建Topic 2.查看Topic列表 3.发送消息 4.接收消息 五、Kafka进阶使用 1.消息持久化与存储 2.消息顺序与…...

SWAT模型高阶应用暨SWAT模型无资料地区建模、不确定分析及气候、土地利用变化对水资源与面源污染影响分析

原文链接:SWAT模型高阶应用暨SWAT模型无资料地区建模、不确定分析及气候、土地利用变化对水资源与面源污染影响分析https://mp.weixin.qq.com/s?__bizMzUzNTczMDMxMg&mid2247604401&idx4&snd2d39846dce07bee765c820de1cf92f3&chksmfa821956cdf5904…...

每日一题——力扣206. 反转链表(举一反三、思想解读)

一个认为一切根源都是“自己不够强”的INTJ 个人主页:用哲学编程-CSDN博客专栏:每日一题——举一反三题目链接 目录 菜鸡写法​编辑 代码点评 代码分析 时间复杂度 空间复杂度 专业点评 另一种方法​编辑 代码点评 代码逻辑 时间复杂度 空间…...

【qt】纯代码界面设计

界面设计目录 一.界面设计的三种方式1.使用界面设计器2.纯代码界面设计3.混合界面设计 二.纯代码进行界面设计1.代码界面设计的总思路2.创建项目3.设计草图4.添加组件指针5.初始化组件指针6.添加组件到窗口①水平布局②垂直布局③细节点 7.定义槽函数8.初始化信号槽9.实现槽函数…...

【深度学习】SDXL中的Offset Noise,Diffusion with Offset Noise,带偏移噪声的扩散

https://www.crosslabs.org//blog/diffusion-with-offset-noise 带有偏移噪声的扩散 针对修改后的噪声进行微调,使得稳定扩散能够轻松生成非常暗或非常亮的图像。 作者:尼古拉斯古藤伯格 | 2023年1月30日 马里奥兄弟使用稳定扩散挖掘隧道。左图显示了未…...

开发属于自己的Spring Boot Starter-18

为什么要开发专用的Spring Boot Starter Spring在通常使用时,一般是通过pom.xml文件中引入相关的jar包,然后再通过application.yml文件配置初始化bean的配置,但随着项目越来越复杂或是项目组中的应用数量越来越多,可能会带来几个…...

C中Mysql的基本api接口

一、初始化参数返回值 二、链接服务器三、执行SQL语句注意事项 四、获取结果集4.1mysql_affected_rows和mysql_num_rows4.2mysql_store_result与mysql_free_result注意事项注意事项整体的工作流程 4.3mysql_use_result()4.4mysql_field_count&#xff08…...

grafana10.x报错 Failed to upgrade legacy queries Datasource x was not found

问题 grafana 从6.x升级到10.x后,导入json文件后报错,数据源x查询不到,grafana不显示数据; Templating Failed to upgrade legacy queries Datasource x was not found解决方法 可能grafana升级后数据源找不到,在面板…...

项目管理-案例重点知识(干系人管理)

项目管理:每天进步一点点~ 活到老,学到老 ヾ(◍∇◍)ノ゙ 何时学习都不晚,加油 四、干系人管理 案例重点知识 干系人管理 案例 重点内容: (1)权力利益方格、权力影响方格&#xff…...

微信小程序踩坑,skyline模式下,scroll-view下面的一级元素设置margin中的auto无效,具体数据有效

开发工具版本 基础库 开启skyline渲染调试 问题描述 skyline模式下,scroll-view下面的一级元素的margin写auto的值是没有效果的(二级元素margin写auto是有效果的),关闭这个模式就正常显示 演示效果图 父元素的宽度和高度效果(宽度是750rpx,宽度占满的) 一级元素宽度和css效果…...

jspXMl标记语言基础

1.打开命令框进入数据库 打开eclipse创建需要连接的项目 粘贴驱动程序 查看驱动器 使用sql的包 int代表个 conlm代表列名 <%page import"java.sql.ResultSet"%> <%page import"java.sql.Statement"%> <%page import"java.sql.Connect…...

【DevOps】Linux 与虚拟局域网 (VLAN) 详解

目录 一、什么是VLAN&#xff1f; 二、VLAN的工作原理 三、Linux中的VLAN支持 四、内核模块 五、用户空间工具 六、创建VLAN 七、配置VLAN 八、管理VLAN 九、VLAN的应用 1、 网络隔离 2、网络管理 3、网络扩展 十、VLAN的优点和限制 十一、结论 虚拟局域网&#…...

告别系统默认驱动:手把手教你为沁恒CH38x/CH35x PCIe串口卡加载官方Linux驱动(含常见错误排查)

告别系统默认驱动&#xff1a;手把手教你为沁恒CH38x/CH35x PCIe串口卡加载官方Linux驱动&#xff08;含常见错误排查&#xff09; 在嵌入式开发和工业控制领域&#xff0c;串口通信的稳定性和功能完整性往往直接影响整个系统的可靠性。当使用沁恒CH38x/CH35x系列PCIe串口卡时…...

从碎片到体系:如何用Obsidian Weread插件打造你的个人读书知识库

从碎片到体系&#xff1a;如何用Obsidian Weread插件打造你的个人读书知识库 【免费下载链接】obsidian-weread-plugin Obsidian Weread Plugin is a plugin to sync Weread(微信读书) hightlights and annotations into your Obsidian Vault. 项目地址: https://gitcode.com…...

KeyboardChatterBlocker:免费开源键盘防连击工具终极指南

KeyboardChatterBlocker&#xff1a;免费开源键盘防连击工具终极指南 【免费下载链接】KeyboardChatterBlocker A handy quick tool for blocking mechanical keyboard chatter. 项目地址: https://gitcode.com/gh_mirrors/ke/KeyboardChatterBlocker 你是否曾经遇到过键…...

NotebookLM脑机接口安全红线清单,3类合规风险已致2家医疗AI公司终止临床试验

更多请点击&#xff1a; https://intelliparadigm.com 第一章&#xff1a;NotebookLM脑机接口研究 NotebookLM 是 Google 推出的基于用户自有文档进行深度理解与推理的 AI 助手&#xff0c;其核心能力在于语义锚定&#xff08;semantic grounding&#xff09;与多源文档交叉推…...

Draft-classic:云原生开发中Kubernetes部署的快速原型工具

1. 项目概述&#xff1a;从零到一的云原生应用部署加速器 如果你和我一样&#xff0c;长期在云原生和Kubernetes领域摸爬滚打&#xff0c;一定经历过这样的场景&#xff1a;一个应用的核心代码逻辑早已写完&#xff0c;但为了让它能在Kubernetes集群里跑起来&#xff0c;你不得…...

如何快速解决AKShare股票数据获取失败:完整的数据采集优化指南

如何快速解决AKShare股票数据获取失败&#xff1a;完整的数据采集优化指南 【免费下载链接】akshare AKShare is an elegant and simple financial data interface library for Python, built for human beings! 开源财经数据接口库 项目地址: https://gitcode.com/gh_mirror…...

5分钟免费搭建PUBG终极雷达系统:实现战场全透视的完整指南

5分钟免费搭建PUBG终极雷达系统&#xff1a;实现战场全透视的完整指南 【免费下载链接】PUBG-maphack-map this is a working copy online-map from jussihi/PUBG-map-hack, use nodejs webserver instead of firebase. 项目地址: https://gitcode.com/gh_mirrors/pu/PUBG-ma…...

脑信号→自然语言转化失败率骤降62%?NotebookLM v2.3神经对齐模块深度拆解,仅限首批内测开发者知晓

更多请点击&#xff1a; https://codechina.net 第一章&#xff1a;NotebookLM脑机接口研究 NotebookLM 是 Google 推出的基于用户自有文档进行语义理解与推理的实验性 AI 工具&#xff0c;虽其官方定位并非直接面向脑机接口&#xff08;BCI&#xff09;领域&#xff0c;但其底…...

一文看懂三种 RAG 架构:Classic RAG、Graph RAG 与 Agentic RAG

很多团队第一次把大模型接进业务系统时&#xff0c;都会问同一个问题&#xff1a;「能不能让 AI 回答我们公司内部文档里的问题&#xff1f;」 比如员工手册里的假期政策、产品文档里的功能说明、客服知识库里的标准话术、会议纪要里的决策记录&#xff0c;甚至是业务系统里的…...

BOX工控机在无人机机载系统中有什么优势?这 3 点是普通工控机比不了的

现在的无人机机载系统&#xff0c;越来越多的人选择用 BOX工控机。很多人问我&#xff0c;BOX工控机到底是什么?它和普通的工控机有什么区别?为什么大家都在用它?今天我就跟大家好好聊聊这个话题。我会从一个 17 年工控人的角度&#xff0c;给大家讲透 BOX工控机在无人机机载…...