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

MySQL 中如何进行 SQL 调优?

在MySQL中进行SQL调优是一个系统性工程,需结合索引优化、查询改写、性能分析工具、数据库设计及硬件配置等多方面策略。以下是具体优化方法及案例说明:

一、索引优化:精准提速的关键

  1. 索引类型选择

    • 普通索引:加速频繁查询的列(如WHERE条件中的department_id)。
    • 复合索引:多列组合查询时创建(如CREATE INDEX idx_name_age ON users(name, age)),避免全表扫描。
    • 覆盖索引:索引包含查询所需所有列(如SELECT id, name FROM users),避免回表操作。
  2. 索引维护

    • 定期删除无用索引,避免写操作开销。
    • 使用EXPLAIN分析查询:若possible_keys有索引但keyNULL,需调整查询条件或索引设计。

二、查询重写:消除性能瓶颈

  1. 避免全表扫描

    • 添加有效过滤条件(如SELECT * FROM employees WHERE department_id = 3 AND name LIKE '%张%'),缩小扫描范围。
  2. 减少数据传输

    • 指定查询列(如SELECT id, name FROM users),避免SELECT *导致的I/O浪费。
  3. 合理使用JOIN与子查询

    • 优先使用JOIN替代子查询(如将子查询SELECT * FROM employees WHERE department_id IN (SELECT id FROM departments WHERE name = 'IT')改为JOIN查询)。
  4. 分页优化

    • 避免LIMIT offset, size(如LIMIT 10000, 20),改用条件查询(如WHERE id > 10000 LIMIT 20)。

三、性能分析工具:精准定位问题

  1. EXPLAIN:执行计划分析

    • 关注type(理想值为consteq_refref)、key(实际使用索引)、rows(预估扫描行数)和Extra(如Using temporary表示需优化)。
    • 示例:EXPLAIN SELECT * FROM orders WHERE customer_id = 123;
  2. 慢查询日志:捕捉低效SQL

    • 启用方法:SET GLOBAL slow_query_log = 'ON';,结合mysqldumpslow工具分析。
    • 优化案例:对SELECT * FROM users WHERE age > 30添加索引CREATE INDEX idx_age ON users(age)
  3. 性能模式(Performance Schema)

    • 监控服务器内部事件(如函数调用、SQL执行阶段),提供详细性能数据。

四、数据库设计与配置优化

  1. 规范化与反规范化

    • 规范化:减少数据冗余,适合事务性系统(如电商订单表)。
    • 反规范化:合并表或冗余字段,提升查询性能(如报表系统)。
  2. 分区与分片

    • 分区:按范围、哈希等分区(如PARTITION BY RANGE(YEAR(order_date))),减少单次查询扫描范围。
    • 分片:将数据分布到多实例,分散负载(如用户表按地区分片)。
  3. 硬件与配置

    • 提升CPU、内存(尤其是InnoDB缓冲池innodb_buffer_pool_size)、使用SSD磁盘。
    • 调整max_connections避免高并发下资源耗尽。

五、高级优化策略

  1. 批处理操作

    • 减少频繁插入/更新的I/O开销(如INSERT INTO table VALUES (...), (...), (...))。
  2. 临时表与视图

    • 简化复杂查询逻辑(如CREATE TEMPORARY TABLE temp_users AS SELECT ...)。
  3. 缓存机制

    • 对频繁查询且变化较少的数据,使用Redis等缓存结果,减少数据库压力。

总结:调优实践建议

  1. 优先使用索引:但避免过度索引导致写操作开销。
  2. 简化查询逻辑:减少嵌套、避免SELECT *
  3. 持续监控分析:通过慢查询日志、EXPLAIN、性能模式定位瓶颈。
  4. 结合业务场景:读写比例、数据量级决定优化策略(如反规范化适用于分析型场景)。

通过以上策略,可显著提升MySQL查询性能,但需根据实际场景权衡利弊,避免过度优化。

我正在编程导航学习项目课程,和其他编程爱好者一起交流进步,你也一起来吧
点击进入

相关文章:

MySQL 中如何进行 SQL 调优?

在MySQL中进行SQL调优是一个系统性工程,需结合索引优化、查询改写、性能分析工具、数据库设计及硬件配置等多方面策略。以下是具体优化方法及案例说明: 一、索引优化:精准提速的关键 索引类型选择 普通索引:加速频繁查询的列&…...

Linux平台下SSH 协议克隆Github远程仓库并配置密钥

目录 注意:先提前配置好SSH密钥,然后再git clone 1. 检查现有 SSH 密钥 2. 生成新的 SSH 密钥 3. 将 SSH 密钥添加到 ssh-agent 4. 将公钥添加到 GitHub 5. 测试 SSH 连接 6. 配置 Git 使用 SSH 注意:先提前配置好SSH密钥,然…...

Android平台FFmpeg音视频开发深度指南

一、FFmpeg在Android开发中的核心价值 FFmpeg作为业界领先的多媒体处理框架,在Android音视频开发中扮演着至关重要的角色。它提供了: 跨平台支持:统一的API处理各种音视频格式完整功能链:从解码、编码到滤镜处理的全套解决方案灵…...

QSFP+、QSFP28、QSFP-DD接口分别实现40G、100G、200G/400G以太网接口

常用的光模块结构形式: 1)QSFP等效于4个SFP,支持410Gbit/s通道传输,可通过4个通道实现40Gbps传输速率。与SFP相比,QSFP光模块的传输速率可达SFP光模块的四倍,在部署40G网络时可直接使用QSFP光模块&#xf…...

MySQL事务和JDBC中的事务操作

一、什么是事务 事务是数据库操作的最小逻辑单元,具有"全有或全无"的特性。以银行转账为例: 典型场景: 从A账户扣除1000元 向B账户增加1000元 这两个操作必须作为一个整体执行,要么全部成功,要么全部失败…...

Linux系统下安装mongodb

1. 配置MongoDB的yum仓库 创建仓库文件 sudo vi /etc/yum.repos.d/mongodb-org.repo添加仓库配置 根据系统版本选择配置(以下示例为CentOS 7和CentOS 9的配置): CentOS 7(安装MongoDB 5.0/4.2等旧版本): In…...

JavaScript篇:async/await 错误处理指南:优雅捕获异常,告别失控的 Promise!

大家好,我是江城开朗的豌豆,一名拥有6年以上前端开发经验的工程师。我精通HTML、CSS、JavaScript等基础前端技术,并深入掌握Vue、React、Uniapp、Flutter等主流框架,能够高效解决各类前端开发问题。在我的技术栈中,除了…...

智能时代下,水利安全员证如何引领行业变革?

当 5G、AI、物联网等技术深度融入水利工程,传统安全管理模式正经历颠覆性变革。在这场智能化浪潮中,水利安全员证扮演着怎样的角色?又将如何重塑行业人才需求格局? 水利工程智能化转型对安全管理提出新挑战。无人机巡检、智能监测…...

使用FastAPI和React以及MongoDB构建全栈Web应用03 全栈开发快速入门

一、什么是全栈开发 A full-stack web application is a complete software application that encompasses both the frontend and backend components. It’s designed to interact with users through a web browser and perform actions that involve data processing and …...

NHANES稀有指标推荐:HALP score

文章题目:Associations of HALP score with serum prostate-specific antigen and mortality in middle-aged and elderly individuals without prostate cancer DOI:10.3389/fonc.2024.1419310 中文标题:HALP 评分与无前列腺癌的中老年人血清…...

软考错题集

一个有向图具有拓扑排序序列,则该图的邻接矩阵必定为()矩阵。 A.三角 B.一般 C.对称 D.稀疏矩阵的下三角或上三角部分包含非零元素,而其余部分为零。一般矩阵这个术语太过宽泛,不具体指向任何特定性 质的矩阵。对称矩阵…...

llama.cpp无法使用gpu的问题

使用cuda编译llama.cpp后,仍然无法使用gpu。 ./llama-server -m ../../../../../model/hf_models/qwen/qwen3-4b-q8_0.gguf -ngl 40 报错如下 ggml_cuda_init: failed to initialize CUDA: forward compatibility was attempted on non supported HW warning: n…...

[面试]SoC验证工程师面试常见问题(五)TLM通信篇

SoC验证工程师面试常见问题(五) 摘要:UVM (Universal Verification Methodology) 中的 TLM (Transaction Level Modeling) 通信是一种用于在验证组件之间传递事务(Transaction)的高层次抽象机制。它通过端口(Port)和导出(Export)实现组件间的解耦通信,避免了信…...

Spring循环依赖问题

个人理解,有问题欢迎指正。 Spring 生命周期中,首先使用构造方法对 bean 实例化,实例化完成之后才将不完全的 bean放入三级缓存中提前暴露出 bean,然后进行属性赋值,此时容易出现循环依赖问题。 由此可见,…...

AtCoder Beginner Contest 405(CD)

C - Sum of Product 翻译&#xff1a; 给你一个长为N的序列。 计算的值。 思路&#xff1a; 可使用前缀和快速得到区间和&#xff0c;在遍历 i 即可。&#xff08;前缀和&#xff09; 实现&#xff1a; #include<bits/stdc.h> using namespace std; using ll long lon…...

MindSpore框架学习项目-ResNet药物分类-模型优化

目录 5.模型优化 5.1模型优化 6.结语 参考内容&#xff1a; 昇思MindSpore | 全场景AI框架 | 昇思MindSpore社区官网 华为自研的国产AI框架&#xff0c;训推一体&#xff0c;支持动态图、静态图&#xff0c;全场景适用&#xff0c;有着不错的生态 本项目可以在华为云modelar…...

C. scanf 函数基础

scanf 函数 1. scanf 函数基础1.1 函数原型与头文件1.2 格式化输入的基本概念2.1 常见格式说明符整数格式说明符浮点数格式说明符字符和字符串格式说明符其他格式说明符2.2 格式说明符的高级用法宽度修饰符精度修饰符跳过输入字段宽度组合修饰符对齐修饰符实际应用示例3.2 精度…...

《C++探幽:模板从初阶到进阶》

文章目录 :red_circle:一、模板基础&#xff1a;开启泛型编程之门&#xff08;一&#xff09;泛型编程的必要性&#xff08;二&#xff09;函数模板1. 函数模板概念2. 函数模板定义格式3. 函数模板原理4. 函数模板实例化5. 模板参数匹配原则 &#xff08;三&#xff09;类模板1…...

画立方体软件开发笔记 js three 投影 参数建模 旋转相机 @tarikjabiri/dxf导出dxf

gitee&#xff1a; njsgcs/njsgcs_3d mainwindow.js:4 Uncaught SyntaxError: The requested module /3dviewport.js does not provide an export named default一定要default吗 2025-05-10 14-27-58 专门写了个代码画立方体 import{ scene,camera,renderer} from ./3dviewp…...

LVGL图像导入和解码

LVGL版本&#xff1a;8.1 概述 在LVGL中&#xff0c;可以导入多种不同类型的图像&#xff1a; 经转换器生成的C语言数组&#xff0c;适用于页面中不常改变的固定图像。存储系统中的外部图像&#xff0c;比较灵活&#xff0c;可以通过插卡或从网络中获取&#xff0c;但需要配置…...

Win10无法上网:Windows 无法访问指定设备、路径或文件。你可能没有适当的权限访问该项目找不到域 TEST 的域控制器DNS 解析存在问题

目录 一.先看问题 二.解决问题 三.补充备用 一.先看问题 Win08有网且已经加入域 Win10无网并且找不到域&#xff08;说明&#xff1a;Win10我之前已经加入过域的&#xff0c;并且能够上网&#xff0c;但每次在宿舍和教室切换校园网&#xff0c;就会导致只有Win10无网&#…...

开疆智能Canopen转Profinet网关连接工博士GBS20机器人配置案例

本案例是介绍将支持canopen通信协议的机器人机器人接入到西门子Profinet网络中&#xff0c;由于两种协议不能直接通讯&#xff0c;故选择了canopen转Profinet网关进行通讯协议转换。 配置过程&#xff1a; 首先打开Profinet主站配置软件&#xff0c;新建项目并导入网关GSD文件…...

物业企业绩效考核制度与考核体系

物业企业绩效考核制度旨在通过建立科学、公正的绩效管理体系,提升员工的工作效率、激发团队的潜力,并通过对绩效结果的合理运用来推动公司可持续发展。该制度覆盖了公司全体员工,并明确规定了不同岗位、不同部门的考核内容、周期以及绩效考核的标准操作流程。通过月度、季度…...

expo多网络请求设定。

在使用 npx expo start 启动 Expo 开发服务器时&#xff0c;你可以通过设置网络模式来控制你的应用如何连接到开发服务器。Expo 提供了几种网络模式供你选择&#xff1a; LAN (Default): 这是默认模式。在这种模式下&#xff0c;你的应用会通过本地局域网 (LAN) 连接到你的开发…...

M0基础篇之ADC

本节课使用到的例程 一、例程基本配置的解释 在例程中我们只使用到了PA25这一个通道&#xff0c;因此我们使用的是Single这个模式&#xff0c;也就是我们在配置模式的时候使用的是单一转换。 进行多个通道的测量我们可以使用Sequence这个模式。 二、例程基本代码讲解 DL_ADC12_…...

Cadence 高速系统设计流程及工具使用三

5.8 约束规则的应用 5.8.1 层次化约束关系 在应用约束规则之前&#xff0c;我们首先要了解这些约束规则是如何作用在 Cadence 设计对象上的。Cadence 中对设计对象的划分和概念&#xff0c;如表 5-11 所示。 在 Cadence 系统中&#xff0c;把设计对象按层次进行了划分&#…...

gitkraken 使用教程

一、安装教程 安装6.5.3&#xff0c;之后是收费的&#xff0c;Windows版免安装 二、使用教程 0. 软件说明 gitkraken是一个git本地仓库管理软件&#xff0c;可以管理多个仓库&#xff0c;并且仓库可以属于多个网站多个账户。 1. 克隆仓库 选择要克隆到什么位置&#xff0…...

抖音视频上传功能测试全维度拆解——从基础功能到隐藏缺陷的深度挖掘

一、核心功能测试&#xff08;Happy Path&#xff09; 文件基础验证 支持格式&#xff1a;MP4/MOV/AVI等&#xff08;含H.264/H.265编码组合验证&#xff09; 分辨率兼容性&#xff1a;720p→8K的渐进式测试&#xff08;重点验证竖屏9:16适配&#xff09; 时长边界&#xff1…...

基于PE环境搭建及调试S32K312

0、简介 本文基于S32K312 介绍PE的使用流程&#xff0c;主要是记录开发流程&#xff1a; MCU&#xff1a;NXP S32k312-100pin 编辑器&#xff1a;S32 Design Studio for S32 Platform 3.5 仿真器&#xff1a;PE USB Multilink Universal REV-E PE和jlink不一样&#xff0c…...

Autoware播放提示音

播放提示音 1、修改sound_player.yaml src/autoware/utilities/sound_player/scripts/sound_player.yaml start : ~/Autoware/install/sound_player/share/sound_player/start.wav stop : ~/Autoware/install/sound_player/share/sound_player/stop.wav red …...

学习黑客5 分钟深入浅出理解cron [特殊字符]

5 分钟深入浅出理解cron &#x1f552; 大家好&#xff01;今天我们将探索Linux系统中的cron——这个强大的定时任务调度工具&#xff0c;它允许用户自动执行周期性任务。在网络安全领域&#xff0c;尤其是在TryHackMe平台上的CTF挑战中&#xff0c;理解cron不仅是系统管理的基…...

Qt解决自定义窗口样式不生效问题

方法一&#xff1a; this->setAttribute(Qt::WA_StyledBackground, true); 方法二&#xff1a; 将类继承QWidget 改成继承 QFrame class MyWidget : public QFrame {} 方法三&#xff1a;重新实现QWidget的paintEvent函数时&#xff0c;使用QStylePainter绘制。 void p…...

redis未授权访问

redis是高速缓存型数据库&#xff0c;主要用户缓存一些频繁使用的数据来缓解数据库的访问压力。而redis未授权访问漏洞是因为redis数据库使用的过程中没有设定密码&#xff0c;任何人都可以直接连接数据库&#xff0c;这既是未授权访问&#xff0c;这是个通用漏洞&#xff0c;部…...

.Net HttpClient 使用准则

HttpClient 使用准则 System.Net.Http.HttpClient 类用于发送 HTTP 请求以及从 URI 所标识的资源接收 HTTP 响应。 HttpClient 实例是应用于该实例执行的所有请求的设置集合&#xff0c;每个实例使用自身的连接池&#xff0c;该池将其请求与其他请求隔离开来。 从 .NET Core …...

Eclipse 插件开发 6 右键菜单

Eclipse 插件开发 6 右键菜单 1 plugin.xml2 SampleHandler.java3 Activator.java 1 plugin.xml <?xml version"1.0" encoding"UTF-8"?> <?eclipse version"3.4"?> <plugin><!-- 定义命令 --><extension point&…...

MGP-STR:用于场景文本识别的多粒度预测

摘要 场景文本识别&#xff08;Scene Text Recognition&#xff0c;简称STR&#xff09;多年来一直是计算机视觉领域的研究热点。为了解决这一具有挑战性的问题&#xff0c;研究者们陆续提出了许多创新方法&#xff0c;近期将语言知识引入STR模型已成为一项重要趋势。在本研究…...

DAMA语境关系图汇总及考前须知

写在前面 1.考前须知 2.梳理彩色详细的语境关系图&#xff0c;方便理解与深化 1.考前须知 单选题10道题&#xff0c;每题1分&#xff0c;满分10分&#xff0c; 多选题15道题&#xff0c;每题2分&#xff0c;满分30分&#xff0c; 解答题6道&#xff0c;每题10分&#xff…...

Vue.js框架的优缺点

别再让才华被埋没&#xff0c;别再让github 项目蒙尘&#xff01;github star 请点击 GitHub 在线专业服务直通车GitHub赋能精灵 - 艾米莉&#xff0c;立即加入这场席卷全球开发者的星光革命&#xff01;若你有快速提升github Star github 加星数的需求&#xff0c;访问taimili…...

【Pandas】pandas DataFrame corr

Pandas2.2 DataFrame Computations descriptive stats 方法描述DataFrame.abs()用于返回 DataFrame 中每个元素的绝对值DataFrame.all([axis, bool_only, skipna])用于判断 DataFrame 中是否所有元素在指定轴上都为 TrueDataFrame.any(*[, axis, bool_only, skipna])用于判断…...

【金仓数据库征文】金融行业中的国产化数据库替代应用实践

【引言】 随着国内技术的进步&#xff0c;越来越多的金融机构开始尝试将传统的商业数据库替换为国产化数据库。金仓数据库&#xff08;KingbaseES&#xff0c;简称KES&#xff09;凭借其高性能、稳定性和灵活的架构&#xff0c;逐步成为金融行业数据库替代的首选方案。本文将探…...

《基于人工智能的智能客服系统:技术与实践》

一、引言 在数字化时代&#xff0c;客户服务已成为企业竞争的关键领域之一。随着人工智能&#xff08;AI&#xff09;技术的飞速发展&#xff0c;智能客服系统逐渐成为企业提升服务质量和效率的重要工具。智能客服不仅能够快速响应客户咨询&#xff0c;还能通过自然语言处理&am…...

关于汇编语言与程序设计——单总线温度采集与显示的应用

一、实验要求 (1)握码管的使用方式 (2)掌握DS18B20温度传感器的工作原理 (3)掌握单总线通信方式实现 MCU与DS18B20数据传输 二、设计思路 1.整体思路 通过编写数码管显示程序和单总线温度采集程序&#xff0c;结合温度传感报警&#xff0c;利用手指触碰传感器&#xff0c;当…...

管道-验证和转换

管道-验证和转换 什么是管道管道的简单使用验证转换ParseIntPipeParseArrayPipe其他代码进度什么是管道 英雄联盟的老鼠说过一句话,条条管道通我家。管道一的脏水流到了管道二,管道二的脏水由于太脏了有杂物,堵住了去管道三的入口,所以通过不了(验证),去了管道四净化了下…...

多层嵌套子查询

在优化多层嵌套子查询的 Hive SQL 时&#xff0c;除了常见的谓词下推、分区裁剪、WITH 子句复用和动态分区优化&#xff0c;还可以通过 抽象语法树&#xff08;AST&#xff09;分析 和 基于历史的优化&#xff08;HBO&#xff09; 进一步优化。以下是结合所有技术方向的完整方案…...

[架构之美]从零开始整合Spring Boot与Maven(十五)

[架构之美]从零开始整合Spring Boot与Maven&#xff08;十五&#xff09; 摘要&#xff1a;本文手把手教你通过Maven快速构建Spring Boot项目&#xff0c;涵盖项目初始化、自动配置、依赖管理及打包部署全流程&#xff0c;并附赠常见避坑指南。适合需要快速搭建企业级项目的开…...

第21天打卡

何时使用降维&#xff1f; 1.数据可视化 高维数据难以直接可视化&#xff08;如超过3维&#xff09;&#xff0c;通过降维&#xff08;如PCA、t-SNE、UMAP&#xff09;投影到2D/3D空间&#xff0c;揭示数据分布、聚类或流形结构。 适用算法&#xff1a;t-SNE&#xff08;非线…...

【小记】excel vlookup一对多匹配

一个学生报四门课&#xff0c;输出每个学生课程 应用概述操作预处理数据计数指令 COUNTIFS进行一对多匹配 vlookup 应用概述 应用场景&#xff1a;学生报名考试&#xff0c;需要整理成指定格式&#xff0c;发给考试院。 一个学生最多报考四门 格式实例&#xff1a;准考证号 …...

前端项目中单元测试与集成测试的管理实践

前端项目中单元测试与集成测试的管理实践 在现代前端工程化中&#xff0c;单元测试&#xff08;Unit Test&#xff09;和集成测试&#xff08;Integration Test&#xff09;已成为保障项目质量的重要手段。合理地组织和管理测试代码&#xff0c;不仅有助于持续集成&#xff0c…...

亿级流量系统架构设计与实战(六)

微服务架构与网络调用 当某个业务从单体服务架构转变为微服务架构后,多个服务之间会通过网络调用形式形成错综复杂的依赖关系。 在微服务架构中 , 一个微服务正常工作依赖它与其他微服务之间的多级网络调用。 网络是脆弱的 , RPC 请求有较大的概率会遇到超时 、 抖动 、 断…...

记录踩过的坑-金蝶云苍穹平台-轻分析和轻报表(慢慢更新)

未发现AppIdName(qing rpt)服务或访问服务网络异常 前提是有许可和权限。 去console&#xff08;云基础平台控制台&#xff09;&#xff0c;点击服务管理&#xff0c;编辑mservice-更新升级-环境变量&#xff0c;在appIds里增加qing_rpt 查看数据库 如果是采用公共数据源连接…...