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

MySQL索引入门:B+树原理+创建优化,新手也能看懂慢查询优化

很多新手觉得“索引是高端技术”,不敢碰,但其实索引是MySQL性能优化的核心,学会它能让查询速度提升百倍。

今天用通俗语言讲解索引原理,再教你怎么创建、优化索引,新手也能看懂慢查询优化~

一、什么是索引?

索引就像书的目录:

  • 没有目录:要找某一页,只能一页页翻(全表扫描)

  • 有目录:先查目录,直接定位页码(索引查找)

本质:索引是一种数据结构,用于快速定位数据库中的记录,避免全表扫描。

二、索引底层原理:B+树

MySQL InnoDB引擎的索引底层是B+树,核心特点:

  1. 多路平衡查找树,查询效率稳定(O(log n))

  2. 所有数据存储在叶子节点,非叶子节点只存索引

  3. 叶子节点之间用链表连接,支持范围查询(如WHERE id > 10

三、常用索引类型

1. 主键索引(PRIMARY KEY)
  • 每张表只能有一个主键索引

  • 索引值唯一、非空

  • 自动创建(建表时指定主键)

CREATETABLEuser(idINTPRIMARYKEYAUTO_INCREMENT,-- 主键索引nameVARCHAR(20));
2. 唯一索引(UNIQUE)
  • 索引值唯一(允许NULL)

  • 适合存储唯一值(如手机号、邮箱)

CREATEUNIQUEINDEXidx_phoneONuser(phone);
3. 普通索引(INDEX)
  • 最基础的索引,无唯一性限制

  • 适合频繁查询的字段

CREATEINDEXidx_nameONuser(name);
4. 联合索引(多列索引)
  • 多个字段组合成一个索引

  • 遵循“最左前缀原则”

CREATEINDEXidx_name_ageONuser(name,age);

四、索引创建最佳实践

  1. 选择高频查询字段:只给WHEREJOINORDER BY中用到的字段加索引

  2. 避免过度索引:索引会降低增删改效率(每次修改都要更新索引)

  3. 使用联合索引:多个字段一起查询时,用联合索引代替多个单值索引

  4. 避免在小表上建索引:小表全表扫描比索引查询更快

  5. 不要在区分度低的字段上建索引:如性别(只有男/女),索引效率极低

五、慢查询优化示例

1. 慢查询SQL
SELECT*FROMuserWHEREname="张三"ANDage>20;
2. 优化方案

创建联合索引:

CREATEINDEXidx_name_ageONuser(name,age);
3. 验证优化效果

EXPLAIN查看执行计划:

EXPLAINSELECT*FROMuserWHEREname="张三"ANDage>20;
  • type列显示refrange→ 索引生效

  • rows列数值变小 → 查询效率提升

六、新手避坑指南

  1. **不要SELECT ***:只查询需要的字段,避免回表

  2. 避免在索引列上做运算:如WHERE YEAR(create_time) = 2024会导致索引失效

  3. 遵循最左前缀原则:联合索引(a,b,c),查询WHERE b=?会失效

  4. 不要用OR连接多个索引列:会导致索引失效

索引是MySQL性能优化的核心,新手先掌握索引的基本概念和创建方法,再通过EXPLAIN分析慢查询,逐步优化。
记住:索引不是越多越好,合适才是最重要的

http://www.jsqmd.com/news/497899/

相关文章:

  • 汽车电子构架演进(二)AUTOSAR的组成和演进
  • python+Ai技术框架的计算思维与人工智能学习网站设计与实现django flask
  • 【后端新手谈 03】告别满屏 try-catch!全局异常处理器的实用价值
  • 大模型落地实战:深度解析 Transformers、vLLM、Ollama 等 6 大主流部署框架
  • 违章真的会让车险涨价吗?很多车主都搞错了,看完少花几千块!(违章真的会影响车险保费吗?一文讲清楚交强险和商业险的浮动规则)
  • HarmonyOS6 半年磨一剑:RcTag 组件实战案例(一)内容展示与商品筛选
  • LangChain大模型应用开发指南:小白也能轻松掌握,收藏必备!
  • 当LSTM戴上“概率眼镜“:用贝叶斯视角玩转时间序列预测
  • 热销榜单:2026年北京本凡科技推荐的最值得的小程序开发平台TOP3,助力企业数字化转型
  • 【Python × AI】Memory 机制深度解析:为大模型植入“长期记忆”的艺术
  • 中文乱码,解决
  • 2026普通人转行,推荐一个好就业的方向——人工智能大模型,非常详细!
  • 低空经济+电力:输电线路无人机巡检及要求
  • 72 编辑距离
  • Vue.js如何通过WebUploader控件解决汽车制造CAD图纸的超大附件分片校验上传?
  • GitNexus:零服务器代码知识图谱引擎,让代码理解更智能
  • 重庆包装袋制作供应厂家排行
  • 飞腾平台 UEFI 与 U-Boot 启动方案对比及选型建议
  • 2-3层网络测试仪全面解析北京网测科技--Supernova 系列产品介绍与选型指南
  • [Win11 Vmware17 CentOS7.6]安装Linux操作系统详细步骤(附VMware17+CentOS7下载链接)
  • 干货!跨境电商出海短视频矩阵工具怎么选?
  • 如何解决帝国CMS 7.5编辑器粘贴Word文档时格式和图片丢失的问题?
  • python+Ai技术框架的健身房课程预约管理系统的设计与实现django flask
  • 深入理解 async/await:现代异步编程的终极解决方案
  • 医疗行业票据合规要求高?智能接口严守风控关
  • 吉林省GEO营销哪个服务商技术强
  • 【CANoe】使用IG发报文触发busOff后不能恢复教程
  • 探索六自由度并联 Stewart Platform 平台的奇妙之旅
  • 基于秃鹰搜索算法优化BP神经网络的多变量时间序列预测
  • 东华复试OJ二刷复盘11