索引是MySQL中加速数据查找的数据结构,通过排序列值并记录行位置实现快速定位;它提升查询速度但拖慢写操作、占用空间;常见类型包括主键、唯一、普通、联合和全文索引;应优先为WHERE、ORDER BY、GROUP BY及JOIN字段建立索引。
索引是 MySQL 中一种专门用来加速数据查找的数据结构,本质就像一本书的目录——不翻完整本书,也能快速定位到某一页。
MySQL 把表中某列(或几列)的值按特定规则排序并保存,同时记录这些值对应数据行的物理位置(比如主键 ID 或磁盘地址)。执行查询时,数据库先查索引找到匹配项的位置,再直接跳过去取数据,避免全表扫描。
例如:
SELECT * FROM users WHERE username = 'alice' 时,MySQL 不会逐行比对所有用户名,而是通过索引快速锁定 alice 所在的行。索引提升查询速度,但会拖慢写操作,并占用额外空间:
MySQL 默认使用 B+Tree 结构,不同索引类型适用于不同场景:
询索引,无约束,可重复、可为空。(age, created_at),遵循最左前缀原则(where age=25 可用,where created_at='2025-01-01' 则不可用)。不是所有字段都值得建索引。优先考虑: