openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引

文章目录

    • openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引
      • 274.1 现象描述
      • 274.2 优化分析

openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引

274.1 现象描述

查询与销售部所有员工的信息:

SELECT staff_id,first_name,last_name,employment_id,state_name,city 
FROM staffs,sections,states,places 
WHERE sections.section_name='Sales' 
AND staffs.section_id = sections.section_id 
AND sections.place_id = places.place_id 
AND places.state_id = states.state_id 
ORDER BY staff_id;

274.2 优化分析

在优化前,没有创建places.place_id和states.state_id索引,执行计划如下:

                                            QUERY PLAN
---------------------------------------------------------------------------------------------------Sort  (cost=129.74..131.18 rows=576 width=136)Sort Key: staffs.staff_id->  Hash Join  (cost=70.54..103.33 rows=576 width=136)Hash Cond: (states.state_id = places.state_id)->  Seq Scan on states  (cost=0.00..22.38 rows=1238 width=36)->  Hash  (cost=69.38..69.38 rows=93 width=108)->  Hash Join  (cost=42.41..69.38 rows=93 width=108)Hash Cond: (places.place_id = sections.place_id)->  Seq Scan on places  (cost=0.00..21.67 rows=1167 width=40)->  Hash  (cost=42.21..42.21 rows=16 width=76)->  Hash Join  (cost=24.66..42.21 rows=16 width=76)Hash Cond: (staffs.section_id = sections.section_id)->  Seq Scan on staffs  (cost=0.00..15.37 rows=537 width=76)->  Hash  (cost=24.59..24.59 rows=6 width=8)->  Seq Scan on sections  (cost=0.00..24.59 rows=6 width=8)Filter: (section_name = 'Sales'::text)
(16 rows)

建议在places.place_id和states.state_id列上建立2个索引,执行计划如下:

                                                QUERY PLAN
-----------------------------------------------------------------------------------------------------------Sort  (cost=119.76..121.20 rows=576 width=136)Sort Key: staffs.staff_id->  Hash Join  (cost=70.14..93.35 rows=576 width=136)Hash Cond: (staffs.section_id = sections.section_id)->  Seq Scan on staffs  (cost=0.00..15.37 rows=537 width=76)->  Hash  (cost=67.43..67.43 rows=217 width=68)->  Nested Loop  (cost=24.66..67.43 rows=217 width=68)->  Hash Join  (cost=24.66..51.06 rows=35 width=40)Hash Cond: (places.place_id = sections.place_id)->  Seq Scan on places  (cost=0.00..21.67 rows=1167 width=40)->  Hash  (cost=24.59..24.59 rows=6 width=8)->  Seq Scan on sections  (cost=0.00..24.59 rows=6 width=8)Filter: (section_name = 'Sales'::text)->  Index Scan using states_state_id_idx on states  (cost=0.00..0.41 rows=6 width=36)Index Cond: (state_id = places.state_id)
(15 rows)

👍 点赞,你的认可是我创作的动力!

⭐️ 收藏,你的青睐是我努力的方向!

✏️ 评论,你的意见是我进步的财富!

img

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.xdnf.cn/news/1411325.html

如若内容造成侵权/违法违规/事实不符,请联系一条长河网进行投诉反馈,一经查实,立即删除!

相关文章

【Java从入门到精通】Java 异常处理

在 Java 中,异常处理是一种重要的编程概念,用于处理程序执行过程中可能出现的错误或异常情况。 异常是程序中的一些错误,但并不是所有的错误都是异常,并且错误有时候是可以避免的。 比如说,你的代码少了一个分号&…

LEETCODE LCR 041. 数据流中的移动平均值

class MovingAverage:def __init__(self, size: int):"""Initialize your data structure here."""self.sizesize1self.front0self.rear0self.queue[None for _ in range(size1)]self.sum0def next(self, val: int) -> float:# 满了if (self.…

平平科技工作室-Python-超级玛丽

一.准备图片 放在文件夹取名为images 二.准备一些音频和文字格式 放在文件夹media 三.编写代码 import sys, os sys.path.append(os.getcwd()) # coding:UTF-8 import pygame,sys import os from pygame.locals import* import time pygame.init() # 设置一个长为1250,宽为…

JavaScript的数组篇

数组的创建: 1) var 数组名 new Array(); 2) var 数组名[]; [ ]内可以为空,也可以填入值,值之间用逗号隔开,数据类型可以是任意类型 数组的遍历: 通过下标发来遍历,这一点和C…

SpringSecurity6 学习

学习介绍 网上关于SpringSecurity的教程大部分都停留在6以前的版本 但是,SpringSecurity6.x版本后的内容进行大量的整改,网上的教程已经不能够满足 最新的版本使用。这里我查看了很多教程 发现一个宝藏课程,并且博主也出了一个关于SpringSec…

搭建MongoDB分片集群

文章目录 一、什么是分片二、分片集群1、组件构成2、分片集群内各组件间交互 三、数据如何切分四、分片策略1、哈希分片2、范围分片 五、分片集群架构六、搭建分片集群1、涉及主机2、所有主机安装MongoDB3、分片节点副本集的创建3.1、第一套副本集shard13.1.1、准备存放数据和日…

esp32-cam 2. python opencv 拉取摄像头内容

0. 环境 - win10 python3 - pycharm - esp32-cam http://192.168.4.1 1. 创建工程 File -> Create Project -> -> Location: E:\Workspaces\PycharmProjects\esp32cam_opencv -> Create 2. opencv hello 2.1 添加脚本 File -> New -> Python f…

形式化可信人工智能方向相关研究介绍

近年来, 具有严格数学基础的形式化方法已经被公认为开发高可靠软硬件系统的有效方法. 目标是对形式化方法在不同系统的应用进行不同维度的分类, 以更好地支撑可信软硬件系统的设计。首先从系统的特征出发, 考虑6种系统特征: **顺序系统、反应式系统、并发与通信系统、实时系统、…

<2024年5月软考高项极限冲刺>《3 二级知识域项目管理一般知识》

1 项目管理一般知识主要是啥 1.1 项目基本概念 你要知道啥是项目?(独特的、临时的)项目管理是什么?项目管理就是将知识、技能、工具、技术应用在项目活动,以满足项目要求。项目成功的标准?是否满足时间、成本、范围和质量的测量指标,项目目标的实现情况。项目;项目集(…

Coze扣子开发指南:搭建一个免费的微信公众号AI客服

运营微信公众号的自媒体,现在借助Coze扣子可以非常好用而且免费的7*24客服了,完全不需要任何编程基础,操作非常简单: 打开Coze扣子,新建一个bot,输入bot名称、功能介绍和图标: 选择大语言模型&…

电阻 电容 电感

电阻理论基础 电阻定义 电阻决定式 温度对电阻的影响 一般电阻都是在-200-500ppm这个范围内 电阻选型 贴片电阻的标值 数字位数 3位和4位 字母R 除了数字和字母R的其他标注 需要查表 电阻精度 电阻功率和温度的关系 电阻的额定电压 零欧姆电阻 零欧姆电阻又称为跨…

json文件的读取

📚博客主页:knighthood2001 ✨公众号:认知up吧 (目前正在带领大家一起提升认知,感兴趣可以来围观一下) 🎃知识星球:【认知up吧|成长|副业】介绍 ❤️感谢大家点赞👍&…

npm ERR! Invalid dependency type requested: alias解决

错误说明: 在使用vue通过npm进行依赖下载的时候出现: npm ERR! Invalid dependency type requested: alias 原因是使用的是nodejs版本比较低,其中附带的npm版本也比较低,较低npm 版本不支持使用别名(alias&#xff0…

【漏洞复现】和丰多媒体信息发布系统QH.aspx存在文件上传漏洞

漏洞描述 和丰多媒体信息发布系统QH.aspx存在文件上传漏洞,未经身份验证的远程攻击者可利用此漏洞上传任意后门文件。 免责声明 技术文章仅供参考,任何个人和组织使用网络应当遵守宪法法律,遵守公共秩序,尊重社会公德,不得利用网络从事危害国家安全、荣誉和利益,未经…

软件工程习题答案2024最新版

习题一答案 一、选择题 软件的主要特性是(A B C)。 A) **无形 **B) 高成本 C) **包括程序和文档 ** D) 可独立构成计算机系统 软件工程三要素是(B)。 A) 技术、方法和工具 B) 方法、工具和过程 C) 方法、对象和类 D) 过程、模型、方法 包含风险分析的软件工程模型是(A)…

如何批量复制多个文件到多个目录中(提取匹配法)

首先,需要用到的这个工具: 度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 具体操作 1、情景再现 我这里创建了3个数字命名的文件夹和一些带有数字命名的图片文件。 (这里仅做演示作用,实际操作的数量肯定巨…

JavaSE——正则表达式(1/2):概述、初步使用(普通方法,正则表达式)、书写规则(字符类,预定义字符,数量词,其他,特殊案例)

目录 概述 初步使用 普通方法 正则表达式 书写规则 字符类 预定义字符 数量词 其他 特殊案例 概述 正则表达式 就是由一些特定的字符组成,代表的是一个规则。 作用一:用来校验数据格式是否合法 (更简单、更便捷) 作…

Python语言在地球科学中地理、气象、气候变化、水文、生态、传感器等数据可视化到常见数据分析方法的使用

Python是功能强大、免费、开源,实现面向对象的编程语言,Python能够运行在Linux、Windows、Macintosh、AIX操作系统上及不同平台(x86和arm),Python简洁的语法和对动态输入的支持,再加上解释性语言的本质&…

STL 标准模板库

以下是一些常用的STL容器: vector:动态数组,提供快速的随机访问。list:双向链表,支持快速插入和删除操作。set:有序集合,存储唯一的元素。map:有序映射,存储键值对。sta…