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

本文主要是介绍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

这篇关于openGauss学习笔记-274 openGauss性能调优-实际调优案例03-建立合适的索引的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/957831

相关文章

利用Python操作Word文档页码的实际应用

《利用Python操作Word文档页码的实际应用》在撰写长篇文档时,经常需要将文档分成多个节,每个节都需要单独的页码,下面:本文主要介绍利用Python操作Word文档页码的相关资料,文中通过代码... 目录需求:文档详情:要求:该程序的功能是:总结需求:一次性处理24个文档的页码。文档详情:1、每个

Java中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例解析

《Java中的分布式系统开发基于Zookeeper与Dubbo的应用案例解析》本文将通过实际案例,带你走进基于Zookeeper与Dubbo的分布式系统开发,本文通过实例代码给大家介绍的非常详... 目录Java 中的分布式系统开发基于 Zookeeper 与 Dubbo 的应用案例一、分布式系统中的挑战二

Java 中的 equals 和 hashCode 方法关系与正确重写实践案例

《Java中的equals和hashCode方法关系与正确重写实践案例》在Java中,equals和hashCode方法是Object类的核心方法,广泛用于对象比较和哈希集合(如HashMa... 目录一、背景与需求分析1.1 equals 和 hashCode 的背景1.2 需求分析1.3 技术挑战1.4

一文详解MySQL索引(六张图彻底搞懂)

《一文详解MySQL索引(六张图彻底搞懂)》MySQL索引的建立对于MySQL的高效运行是很重要的,索引可以大大提高MySQL的检索速度,:本文主要介绍MySQL索引的相关资料,文中通过代码介绍的... 目录一、什么是索引?为什么需要索引?二、索引该用哪种数据结构?1. 哈希表2. 跳表3. 二叉排序树4.

Java中实现对象的拷贝案例讲解

《Java中实现对象的拷贝案例讲解》Java对象拷贝分为浅拷贝(复制值及引用地址)和深拷贝(递归复制所有引用对象),常用方法包括Object.clone()、序列化及JSON转换,需处理循环引用问题,... 目录对象的拷贝简介浅拷贝和深拷贝浅拷贝深拷贝深拷贝和循环引用总结对象的拷贝简介对象的拷贝,把一个

Java中最全最基础的IO流概述和简介案例分析

《Java中最全最基础的IO流概述和简介案例分析》JavaIO流用于程序与外部设备的数据交互,分为字节流(InputStream/OutputStream)和字符流(Reader/Writer),处理... 目录IO流简介IO是什么应用场景IO流的分类流的超类类型字节文件流应用简介核心API文件输出流应用文

Docker多阶段镜像构建与缓存利用性能优化实践指南

《Docker多阶段镜像构建与缓存利用性能优化实践指南》这篇文章将从原理层面深入解析Docker多阶段构建与缓存机制,结合实际项目示例,说明如何有效利用构建缓存,组织镜像层次,最大化提升构建速度并减少... 目录一、技术背景与应用场景二、核心原理深入分析三、关键 dockerfile 解读3.1 Docke

MyBatis分页查询实战案例完整流程

《MyBatis分页查询实战案例完整流程》MyBatis是一个强大的Java持久层框架,支持自定义SQL和高级映射,本案例以员工工资信息管理为例,详细讲解如何在IDEA中使用MyBatis结合Page... 目录1. MyBATis框架简介2. 分页查询原理与应用场景2.1 分页查询的基本原理2.1.1 分

深度解析Java @Serial 注解及常见错误案例

《深度解析Java@Serial注解及常见错误案例》Java14引入@Serial注解,用于编译时校验序列化成员,替代传统方式解决运行时错误,适用于Serializable类的方法/字段,需注意签... 目录Java @Serial 注解深度解析1. 注解本质2. 核心作用(1) 主要用途(2) 适用位置3

从原理到实战解析Java Stream 的并行流性能优化

《从原理到实战解析JavaStream的并行流性能优化》本文给大家介绍JavaStream的并行流性能优化:从原理到实战的全攻略,本文通过实例代码给大家介绍的非常详细,对大家的学习或工作具有一定的... 目录一、并行流的核心原理与适用场景二、性能优化的核心策略1. 合理设置并行度:打破默认阈值2. 避免装箱