MySQL 系统学习 第四阶段:MySQL 高级 第三节:SQL 性能优化
📅 2026/7/14 5:18:07
👁️ 次浏览
一、SQL 性能优化的目标优化 SQL 的核心目标减少扫描的数据量 排序成本 临时表创建 磁盘 IO例如查询 1000 万数据差的 SQL扫描 1000 万行 排序 返回 10 条好的 SQL通过索引定位 扫描 10 行 返回结果二、避免 SELECT *⭐⭐⭐⭐⭐不推荐SELECT * FROM user;推荐SELECT id, username, age FROM user;为什么① 增加网络传输例如用户表id username password avatar description create_time update_time如果SELECT *返回全部字段。但是页面只需要username avatar多余数据也会传输。② 影响索引覆盖例如索引(username, age)查询SELECT username, age FROM user;MySQL直接从索引获取。叫覆盖索引但是SELECT * FROM user;需要索引↓回表↓查询完整数据效率下降。三、合理使用索引索引不是随便加。1. 经常作为查询条件例如SELECT * FROM user WHERE phone13800000000;建议CREATE INDEX idx_phone ON user(phone);2. 经常排序例如SELECT * FROM order ORDER BY create_time DESC;建议CREATE INDEX idx_time ON order(create_time);3. 经常 JOIN例如SELECT * FROM orders o JOIN user u ON o.user_idu.id;建议CREATE INDEX idx_user_id ON orders(user_id);四、联合索引优化 ⭐⭐⭐⭐⭐例如创建CREATE INDEX idx_name_age ON user(name, age);这个索引实际上是name ↓ age满足可以使用①WHERE nameTom✅②WHERE nameTom AND age20✅③WHERE nameTom ORDER BY age✅不推荐WHERE age20❌原因违反最左匹配原则例如索引(name, age, address)匹配name name age name age address但是age address无法有效利用。五、避免索引失效 ⭐⭐⭐⭐⭐1. 不要对索引字段做计算错误SELECT * FROM user WHERE id 1 10;原因MySQL需要计算每一行。正确WHERE id 9;2. 不要使用函数错误WHERE YEAR(create_time)2026;推荐WHERE create_time 2026-01-01 AND create_time 2027-01-01;3. LIKE 不要以 % 开头错误WHERE name LIKE %Tom;原因不知道从哪里开始查。可以WHERE name LIKE Tom%;六、分页优化 ⭐⭐⭐⭐⭐这是企业非常常见的问题。普通分页例如第一页SELECT * FROM user LIMIT 0,20;很好。第100万页SELECT * FROM user LIMIT 1000000,20;问题MySQL需要扫描前1000020条 丢弃1000000条 返回20条非常慢。七、深分页优化方法1记录最后ID例如第一页SELECT * FROM user ORDER BY id LIMIT 20;返回最后id20下一页SELECT * FROM user WHERE id20 ORDER BY id LIMIT 20;优势直接定位。方法2覆盖索引优化先查 IDSELECT id FROM user LIMIT 1000000,20;然后根据 ID 查询SELECT * FROM user WHERE id IN(...)减少回表。八、减少不必要排序例如SQLSELECT * FROM user ORDER BY create_time;如果没有索引执行查询全部 排序EXPLAIN可能出现Using filesort优化CREATE INDEX idx_create_time ON user(create_time);九、减少临时表例如SELECT age,COUNT(*) FROM user GROUP BY age;可能创建临时表优化给分组字段建立索引CREATE INDEX idx_age ON user(age);十、批量操作优化不推荐循环for(User user:list){ insert(user); }执行10000次SQL推荐批量INSERT INTO user VALUES (1,Tom), (2,Jack), (3,Lucy);一次提交。优势减少网络通信SQL解析事务提交次数十一、慢查询优化流程企业流程发现接口慢↓查看慢 SQL↓执行EXPLAIN↓分析type key rows Extra↓优化可能方案增加索引 修改SQL 调整分页 减少字段↓再次测试。十二、SQL优化原则总结优化方向方法减少查询字段避免 SELECT *减少扫描合理索引避免索引失效不要函数、计算、前置%优化分页避免深分页减少排序建立排序字段索引减少临时表优化 GROUP BY减少交互批量操作十三、本节核心一句话SQL 优化的本质就是让 MySQL 少扫描数据、少计算、少排序通过索引快速定位目标数据。
一、人物介绍赵昚(1127年-1194年),南宋第二位皇帝,宋高宗赵构养子,史称宋孝宗。他是南宋一朝评价最高的帝王,自幼聪慧仁厚、文武兼备。身处宋金南北对峙的时代,他一改高宗偏安怯战的作风&#x…
📅 2026/7/14 5:18:07
1. 问题现象:回调频繁分配内存,主线程卡顿在多线程 C 程序中,经常会遇到回调函数被高频触发的情况。比如网络数据到达回调、传感器数据采集回调、日志写入回调、定时器触发等。如果回调函数内部频繁使用 new、malloc 或 STL 容器的动态扩容来…
📅 2026/7/14 5:18:07
很多制造企业在发展过程中,都会遇到一个非常现实的问题:订单越来越多,生产却越来越乱。以前订单少的时候,老板或者生产主管凭经验安排一下,也能运转,但企业一旦进入增长阶段,问题就开始暴露&…
📅 2026/7/14 5:18:07
1. Unity3D入门:引擎基础与环境搭建第一次打开Unity编辑器时,那个默认的蓝色天空盒和灰色平面总让人有种创造世界的冲动。作为全球使用最广泛的实时3D开发平台,Unity的魅力在于它用可视化编辑器降低了游戏开发的门槛。我至今记得2015年第一次…
📅 2026/7/14 6:58:37
当 CIO 和信息化负责人在选型企业级协作工具时,“安全可控”已经压倒性地成为首位考量。在敏感数据流转、跨部门协同与系统打通的复杂场景中,他们越来越清醒地认识到:公有云 IM 的便捷,往往以牺牲数据主权和集成深度为代价。
BeeW…
📅 2026/7/14 6:58:37
本文将介绍软件开发过程中的工程框架,作者对本模块并非精通,所写所作及代码均来自老师傅的传授,加上自己的理解。Doc:文档,主要包含软件的说明书、界面设计、算法开发要求等内容Src:码源,开发过…
📅 2026/7/14 6:58:37
前言
calculator 是一个基于 Flutter 的轻量级 Calculator 计算器 项目,源码集中在 lib/main.dart,同时保留了 ohos 平台工程目录。效果图如下:
本文重点回答三个问题:
calculator 的计算流程是怎样组织的。Flutter 页面状态如…
📅 2026/7/14 6:58:37
1. 项目概述:一个MFC中国象棋项目的深度拆解最近在整理旧项目时,翻出了一个用MFC和Visual C写的中国象棋游戏。这个项目虽然年头不短,但麻雀虽小五脏俱全,从棋盘绘制、棋子移动、规则判定到胜负判断,完整地走了一遍Win…
📅 2026/7/14 6:58:37
刚来吉隆坡或者准备换房?是不是看着满屏的房源广告头都大了?这篇就是专门给你看的。我不讲那些虚头巴脑的理论,只说我在_sunway附近租房geo这个圈子里踩过的坑和捡到的漏。看完这篇,你至少能避开80%的隐形收费,还能找到真正舒服的家。先说个扎心的真相。很多中介发来的照片…
📅 2026/7/14 6:58:26
从“创始人投影”到“真理映射”——大语言模型认知本质的哲学批判与范式重构
摘要
当前全球主流大语言模型(LLMs)在技术指标上持续突破,却在认知本质上陷入了一种根本性的“搞反”状态:它们本应成为人类超越自身认知局限的“传…
📅 2026/7/14 0:00:05
Hadoop 3.2.2 JDK 21 Windows开发环境全流程实战指南对于需要在Windows环境下进行大数据开发的Java/Scala开发者来说,搭建一个本地Hadoop开发环境是入门的第一步。本文将带你从零开始,完成Hadoop 3.2.2与JDK 21的环境搭建,并实现一个完整的M…
📅 2026/7/14 0:00:05
1. 项目概述:为什么你需要Boost库? 如果你用C写过一些项目,尤其是涉及到网络、并发、文件系统或者需要处理一些复杂数据结构时,大概率会听过或者用过Boost库。它不是C标准库的一部分,但它在C社区的地位,几…
📅 2026/7/14 0:00:05
豆包openclaw最近圈子里都在聊豆包openclaw,我也没忍住,掏腰包入手了一套。说实话,刚拿到手的时候,心里是打鼓的。毕竟市面上类似的智能硬件太多了,有的吹得天花乱坠,用起来却是一堆bug。为了不让大家的钱打水漂,我连续用了半个月。从开箱到日常高频使用,甚至故意测试它…
📅 2026/7/14 6:35:02
SQLyog 13.3.1 社区版在Windows 10/11上的完整安装与连接指南 对于刚接触MySQL数据库管理的开发者和学生来说,选择一个直观易用的图形化管理工具至关重要。SQLyog作为一款轻量级但功能强大的MySQL GUI工具,能够显著提升数据库操作的效率和体验。本文将详…
📅 2026/7/13 6:21:22
SPEC CPU 2006 跨平台基准测试深度实战:ARM/X86/MIPS 架构配置优化与结果分析方法论在当今多元化的计算架构时代,如何客观评估不同处理器平台的真实性能成为系统工程师和性能优化专家的核心挑战。SPEC CPU 2006 作为业界公认的计算密集型基准测试套件&am…
📅 2026/7/13 7:10:30
目录
第一步:选对模板,省心一半
第二步:打开扫码点餐功能
开启功能按钮
桌台管理与桌码生成
第三步:个性化设计,打造品牌感
调整点餐页面
设置点餐规则 你还在让顾客站着排队点餐吗?2025年ÿ…
📅 2026/7/13 3:29:47
在业务中快速构建一个能理解私有文档、准确回答专业问题的智能助手,是很多开发团队面临的共同挑战。传统方案往往需要从零开始搭建复杂的 RAG(检索增强生成)系统,涉及文档解析、向量化、检索、大模型调用等多个环节,整…
📅 2026/7/13 19:47:36
FAE放射组学分析工具:医学影像特征探索的完整解决方案 【免费下载链接】FAE FeAture Explorer 项目地址: https://gitcode.com/gh_mirrors/fae/FAE
你是否曾经面对海量医学影像数据感到无从下手?想要从CT、MRI等影像中提取有价值的定量特征&#…
📅 2026/7/13 9:07:16