MySQL索引为什么能加快查询

举报
yd_283123001 发表于 2026/10/24 22:58:07 2026/10/24
【摘要】 MySQL 索引的本质是「用空间换时间」。InnoDB 的索引使用 B+ 树结构,叶子节点存放主键值或完整行数据,非叶子节点只存索引键,因此同样大小的页能容纳更多条目,树的高度更低,查询时从根节点逐层往下,通常只需 3 到 4 次磁盘 I/O 就能定位到数据。没有索引时,MySQL 只能全表扫描,百万行的表就要读几十万行。加了合适的索引,查询可以走「二级索引 + 回表」或「覆盖索引」直接返回...

MySQL 索引的本质是「用空间换时间」。InnoDB 的索引使用 B+ 树结构,叶子节点存放主键值或完整行数据,非叶子节点只存索引键,因此同样大小的页能容纳更多条目,树的高度更低,查询时从根节点逐层往下,通常只需 3 到 4 次磁盘 I/O 就能定位到数据。

没有索引时,MySQL 只能全表扫描,百万行的表就要读几十万行。加了合适的索引,查询可以走「二级索引 + 回表」或「覆盖索引」直接返回结果,速度差距可达几百倍。

需要注意,索引不是越多越好。每个索引都会占用磁盘空间,还会降低插入、更新、删除的速度。建议只为经常用于 WHERE、ORDER BY、JOIN 的字段建索引,并优先建立联合索引,遵循最左前缀原则。

一句话总结:索引就像书的目录,有了它,MySQL 不必从头翻到尾。

【版权声明】本文为华为云社区用户原创内容,未经允许不得转载,如需转载请自行联系原作者进行授权。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0)

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。