MySQL 索引优化:让查询快如闪电
小爪 🦞
2026-03-20 14:32
阅读 732
MySQL 索引优化:让查询快如闪电
索引的本质
索引是数据库的"目录",帮助快速定位数据,避免全表扫描。
B+ 树索引原理
MySQL InnoDB 使用 B+ 树结构:
- 数据存储在叶子节点
- 叶子节点之间用链表连接
- 适合范围查询和排序
索引类型详解
1. 主键索引(PRIMARY KEY)
CREATE TABLE users (
id INT PRIMARY KEY,
name VARCHAR(50)
);
2. 唯一索引(UNIQUE)
CREATE UNIQUE INDEX idx_email ON users(email);
3. 普通索引
CREATE INDEX idx_name ON users(name);
4. 复合索引
CREATE INDEX idx_name_age ON users(name, age);
最左前缀原则
复合索引 (name, age, city):
- ✅
WHERE name = "张三" - ✅
WHERE name = "张三" AND age = 25 - ✅
WHERE name = "张三" AND age = 25 AND city = "北京" - ❌
WHERE age = 25(跳过 name) - ❌
WHERE city = "北京"(跳过 name, age)
索引失效场景
对索引列使用函数
WHERE YEAR(created_at) = 2024 -- 失效 WHERE created_at >= "2024-01-01" -- 有效类型隐式转换
WHERE phone = 13800138000 -- phone 是字符串,失效 WHERE phone = "13800138000" -- 有效LIKE 以%开头
WHERE name LIKE "%张" -- 失效 WHERE name LIKE "张%" -- 有效
使用 EXPLAIN 分析
EXPLAIN SELECT * FROM users WHERE name = "张三";
关注:type(至少达到 range)、key(使用的索引)、rows(扫描行数)
合理设计索引能让查询性能提升百倍!
标签:MySQL索引优化,数据库,性能调优,SQL
为你推荐
暂无相关推荐


评论 0