sql 性能优化基于explain调优(二)

简介: sql 性能优化基于explain调优(二)


Explain

关于Explain具体怎么用以及有哪些优点,我就不过多的跟大家去讲解了,从我最初的文章: explain是什么?explain优缺点及如何使用explain优化SQL,大家可以点击这个链接看一下,对Explain有个基础的了解,前段时间我发表的博客文章sql 性能优化基于explain调优,讲述的时在实战当中,当我们拿到SQL语句,查询几秒甚至10及秒时,如何进行优化为几毫秒

回到正题,今天这边文章还是围绕使用Explain对SQL的性能调优问题,可见认识到了Explain的重要性了吧,此案例呢为实战案例,也是我在项目中遇到的SQL性能调优问题

问题描述

先来看下需要进行优化的SQL语句

SELECT
        m.`name` AS memberId_dictText,
        o.type AS type_dictText,
         i.`name` AS taskId_dictText,
        o.number AS number,
        o.create_time AS createTime,
        g.`name` AS goodsId_dictText,
        o.`code`,
        o.is_make AS isMake,
        o.end_time AS endTime
        FROM
        sg_operation_records o
        LEFT JOIN sg_member m ON o.member_id = m.id
         LEFT JOIN sys_user u ON m.doctor_id = u.id
         LEFT JOIN sg_item i ON i.id = o.task_id
         LEFT JOIN sg_goods g ON goods_id = o.goods_id
         AND g.sys_org_code = m.sys_org_code
        WHERE 1 = 1
--             AND o.type = #{recordType}
--                 AND g.is_on_sale = 1
--                 AND g.is_delete = 0
--             AND u.id = #{doctorId}
            AND m.sys_org_code = 'A02A01'
--             AND m.name like  CONCAT('%', #{name},'%')

前端查询时报了一个这样的错误

解决方案

这个错误很明显是前端调用后端,由于长时间没收到后端的回复,超时了,我的解决思路是,打下断点,看看是后端报错了吗,跑了一下程序,后端是没有问题的,然后我的目光转向了XML文件里的SQL,在数据里执行了一下SQL语句,查询时间为2秒多

回到SQL语句中查看这是一个五个表连接查询的SQL语句,主表为sg_operation_recordssg_operation_records表的外键关联为member_idgoods_id这两列,向这两列添加复合索引

create index key_operation_records on sg_operation_records(member_id,goods_id)

查看及添加索引语法(以复合索引为例)

//添加索引
create index 索引名称 on 表名(列名,列名)
// 查看索引
show index from 表名

此时已经给sg_operation_records表中的这两列加上了复合索引

再来执行一下SQL语句,3毫秒SQL语句没有变,只是给列加了索引

总结

在SQL性能调优时,在SQL语句select前面加上Explain关键字,怎么分析,在我本文的开头提到过来,在本博主的上一篇文章中有详细讲解,根据Explain去分析当前SQL语句是否用到索引,有没有导致索引失效等问题,再去向指定列添加索引,就可以了。

本次技术分享到此结束,有不明白或者疑问的博主,可以私信我哦 ~~~

目录
相关文章
|
4月前
|
SQL 运维 监控
SQL查询太慢?实战讲解YashanDB SQL调优思路
本文是Meetup第十期“调优实战专场”的第二篇技术文章,上一篇《高效查询秘诀,解码YashanDB优化器分组查询优化手段》中,我们揭秘了YashanDB分组查询优化秘诀,本文将通过一个案例,助你快速上手YashanDB慢日志功能,精准定位“慢SQL”后进行优化。
|
3月前
|
SQL 关系型数据库 MySQL
大数据新视界--大数据大厂之MySQL数据库课程设计:MySQL 数据库 SQL 语句调优方法详解(2-1)
本文深入介绍 MySQL 数据库 SQL 语句调优方法。涵盖分析查询执行计划,如使用 EXPLAIN 命令及理解关键指标;优化查询语句结构,包括避免子查询、减少函数使用、合理用索引列及避免 “OR”。还介绍了索引类型知识,如 B 树索引、哈希索引等。结合与 MySQL 数据库课程设计相关文章,强调 SQL 语句调优重要性。为提升数据库性能提供实用方法,适合数据库管理员和开发人员。
|
3月前
|
关系型数据库 MySQL 大数据
大数据新视界--大数据大厂之MySQL 数据库课程设计:MySQL 数据库 SQL 语句调优的进阶策略与实际案例(2-2)
本文延续前篇,深入探讨 MySQL 数据库 SQL 语句调优进阶策略。包括优化索引使用,介绍多种索引类型及避免索引失效等;调整数据库参数,如缓冲池、连接数和日志参数;还有分区表、垂直拆分等其他优化方法。通过实际案例分析展示调优效果。回顾与数据库课程设计相关文章,强调全面认识 MySQL 数据库重要性。为读者提供综合调优指导,确保数据库高效运行。
|
10月前
|
存储 SQL 关系型数据库
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
MySQL调优主要分为三个步骤:监控报警、排查慢SQL、MySQL调优。 排查慢SQL:开启慢查询日志 、找出最慢的几条SQL、分析查询计划 。 MySQL调优: 基础优化:缓存优化、硬件优化、参数优化、定期清理垃圾、使用合适的存储引擎、读写分离、分库分表; 表设计优化:数据类型优化、冷热数据分表等。 索引优化:考虑索引失效的11个场景、遵循索引设计原则、连接查询优化、排序优化、深分页查询优化、覆盖索引、索引下推、用普通索引等。 SQL优化。
1198 15
【MySQL调优】如何进行MySQL调优?从参数、数据建模、索引、SQL语句等方向,三万字详细解读MySQL的性能优化方案(2024版)
|
9月前
|
SQL 监控 Oracle
Oracle SQL性能优化全面指南
在数据库管理领域,Oracle SQL性能优化是确保数据库高效运行和数据查询速度的关键
1309 6
|
9月前
|
SQL 数据挖掘 数据库
SQL查询每秒的数据:技巧、方法与性能优化
id="">SQL查询功能详解 SQL(Structured Query Language,结构化查询语言)是一种专门用于与数据库进行沟通和操作的语言
|
9月前
|
SQL 机器学习/深度学习 关系型数据库
最完整的Explain总结,SQL优化不再困难!
最完整的Explain总结,SQL优化不再困难!
|
8月前
|
SQL 缓存 监控
SQL性能提升指南:五大优化策略与十个实战案例
在数据库性能优化的世界里,SQL优化是提升查询效率的关键。一个高效的SQL查询可以显著减少数据库的负载,提高应用响应速度,甚至影响整个系统的稳定性和扩展性。本文将介绍SQL优化的五大步骤,并结合十个实战案例,为你提供一份详尽的性能提升指南。
357 0
|
9月前
|
SQL Oracle 关系型数据库
Oracle SQL:了解执行计划和性能调优
Oracle SQL:了解执行计划和性能调优
184 1
|
10月前
|
SQL 分布式计算 数据库
SQL调优总结
数据库表的规范化和反规范化设计,设计合适的字段数据类型……
89 8

热门文章

最新文章