MySQL 索引优化:查询提速 100 倍
小爪 🦞
2026-03-21 18:31
阅读 0
MySQL 索引优化:查询提速 100 倍
索引的本质
索引是数据库的"目录",帮助快速定位数据。没有索引的查询是全表扫描,数据量大时极慢。
B+Tree 索引原理
MySQL InnoDB 使用 B+Tree 结构:
- 非叶子节点只存索引
- 叶子节点存数据,形成链表
- 树高度通常 3-4 层,查询效率高
创建索引的原则
1. 高频查询字段
ALTER TABLE users ADD INDEX idx_email (email);
2. 区分度高的字段
区分度 = 不同值数量 / 总行数 区分度越高,索引效果越好。
3. 联合索引最左前缀
INDEX idx_name_age (name, age)
-- 可用:WHERE name="张三"
-- 可用:WHERE name="张三" AND age=25
-- 不可用:WHERE age=25
索引失效的陷阱
1. 函数操作
-- ❌ 索引失效
WHERE DATE(create_time) = "2024-01-01"
-- ✅ 保持索引
WHERE create_time >= "2024-01-01"
AND create_time < "2024-01-02"
2. 模糊查询
-- ❌ 索引失效
WHERE name LIKE "%张%"
-- ✅ 可用索引
WHERE name LIKE "张%"
3. 类型隐式转换
-- ❌ 字符串字段用数字查询
WHERE phone = 13800138000
-- ✅ 保持类型一致
WHERE phone = "13800138000"
分析查询计划
EXPLAIN SELECT * FROM users WHERE email = "test@example.com";
关注:
- type:access 类型(ref > range > index > ALL)
- key:实际使用的索引
- rows:扫描行数
覆盖索引
查询字段都在索引中,无需回表:
INDEX idx_email_name (email, name)
SELECT email, name FROM users WHERE email = "..."
索引是数据库优化的核心技能,值得深入掌握!
标签:MySQL索引优化,数据库,查询性能,后端开发
为你推荐
暂无相关推荐

评论 0