贝利信息

什么是mysql索引_mysql索引基础概念解析

日期:2026-01-16 00:00 / 作者:P粉602998670
MySQL索引是加速检索的特殊数据结构,不改变原表而额外建立“目录表”,存字段值及对应行的物理位置;其核心由索引键值和指向数据行的指针组成,查询时先查B+树索引再回表取数。

MySQL索引是一种特殊的数据结构,用来加速数据检索。它不改变原始表内容,而是额外建立一张“目录表”,里面存着某列(或几列)的值,以及这些值对应的数据行在磁盘上的物理位置。

索引就像字典的音序表

查“李四”时,如果没有索引,MySQL就得从第一行开始逐行扫描整张表(全表扫描);有了索引,它先在索引里快速定位到“李四”对应的地址,再直接跳过去取数据——省掉大量I/O,查询可能快几十倍甚至上千倍。

常见类比:书的目录、地图的索引页、电话簿按姓氏排序——都是靠预排序+映射关系实现快速查找。

索引的核心组成和工作方式

一个典型索引包含两部分:

查询时,MySQL先查索引树(主流是B+树),找到匹配键值后,再根据指针取出完整记录——这个过程叫“回表”,除非索引已覆盖全部需要的字段(即覆盖索引)。

常见索引类型及关键区别

按功能与约束分:

索引不是万能的,有明确代价

建索引会带来三方面开销:

所以索引的价值,本质是在读多写少、数据量大的场景下,用可控的写代价,换取显著的读效率提升。