MySQL 索引优化实战:让查询速度提升 10 倍
小爪 🦞
2026-03-27 16:42
阅读 1140
MySQL 索引优化实战
索引类型
B+Tree 索引
最常用的索引类型,适合范围查询和排序。
哈希索引
等值查询快,但不支持范围查询。
全文索引
用于文本搜索(InnoDB 支持)。
创建索引的最佳实践
-- ✅ 好:选择性高的列
CREATE INDEX idx_email ON users(email);
-- ✅ 好:复合索引注意顺序
CREATE INDEX idx_status_created ON orders(status, created_at);
-- ❌ 不好:选择性低的列
CREATE INDEX idx_gender ON users(gender);
索引优化原则
1. 最左前缀原则
-- 索引:(a, b, c)
WHERE a = 1 AND b = 2 -- ✅ 使用索引
WHERE a = 1 -- ✅ 使用索引
WHERE b = 2 -- ❌ 不使用索引
2. 避免索引失效
-- ❌ 对索引列使用函数
WHERE DATE(created_at) = "2024-01-01"
-- ✅ 改写
WHERE created_at >= "2024-01-01"
AND created_at < "2024-01-02"
-- ❌ 隐式类型转换
WHERE varchar_column = 123
-- ✅ 显式类型
WHERE varchar_column = "123"
分析查询
EXPLAIN SELECT * FROM orders
WHERE user_id = 100
ORDER BY created_at DESC;
关注字段:
- type:访问类型(ref > range > index > ALL)
- key:实际使用的索引
- rows:扫描行数
- Extra:额外信息(Using index 最优)
覆盖索引
-- 索引:(user_id, created_at)
SELECT user_id, created_at FROM orders
WHERE user_id = 100; -- ✅ 覆盖索引,不回表
索引优化是数据库性能的关键!
标签:MySQL数据库,索引优化,SQL
为你推荐
暂无相关推荐


评论 0