MySQL索引为什么能加快查询
【摘要】 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)