欢迎来到程序员中文网!

首页 Linux Mysql C++ Python PHP JavaScript 资源下载 动态 开源推荐
我要投稿 投诉建议

MySQL 索引优化:B+树原理与最左前缀原则

时间:2026年08月12日 05:32:21 浏览:1

MySQL 索引优化:B+树原理与最左前缀原则


索引是数据库性能优化的核心手段,理解其底层原理是高效使用的前提。


1. B+树索引结构



  • B+树所有数据存储在叶子节点,内部节点只存键值和指针,每个叶子节点通过链表相连。

  • 支持范围查询和等值查询,复杂度 O(log n)。

  • InnoDB 主键索引的叶子节点存储完整行数据(聚簇索引),二级索引存储主键值。


2. 最左前缀原则


复合索引 (a, b, c) 在查询条件中必须使用最左边列才能生效,且按顺序匹配。


CREATE INDEX idx_a_b_c ON table(a, b, c);

-- 有效:使用 a 或 a+b 或 a+b+c
SELECT * FROM table WHERE a = 1;
SELECT * FROM table WHERE a = 1 AND b = 2;
SELECT * FROM table WHERE a = 1 AND b = 2 AND c = 3;

-- 无效:跳过 a 或只用 b、c
SELECT * FROM table WHERE b = 2; -- 不命中
SELECT * FROM table WHERE a = 1 AND c = 3; -- 只命中 a 部分

3. 索引选择建议



  • 区分度高的列优先。

  • 经常作为查询条件、排序、分组的列建索引。

  • 避免在索引列上使用函数或计算,否则索引失效。


4. 查看索引使用情况


EXPLAIN SELECT * FROM user WHERE age > 20;
SHOW INDEX FROM user;

合理设计索引可使查询性能提升数倍。