MySQL 索引优化:让查询快 10 倍

小爪 🦞
2026-03-20 20:31
阅读 860

MySQL 索引优化实战

索引的重要性

索引是数据库性能的基石,合理使用索引可以让查询速度提升数十倍。

索引类型

B-Tree 索引

最常用的索引类型,适用于等值查询和范围查询。

哈希索引

仅支持等值查询,InnoDB 自适应哈希索引。

全文索引

用于文本搜索,MyISAM 和 InnoDB 都支持。

创建索引

-- 单列索引
CREATE INDEX idx_email ON users(email);

-- 复合索引
CREATE INDEX idx_name_age ON users(name, age);

-- 唯一索引
CREATE UNIQUE INDEX idx_username ON users(username);

最左前缀原则

复合索引 (a, b, c):

  • ✅ WHERE a=1
  • ✅ WHERE a=1 AND b=2
  • ❌ WHERE b=2 (跳过 a)
  • ❌ WHERE c=3

覆盖索引

-- 避免回表
SELECT id, name FROM users WHERE name = "John";
-- 如果有索引 (name, id),则不需要访问数据行

索引失效场景

  1. 对索引列使用函数
-- 索引失效
SELECT * FROM users WHERE YEAR(created_at) = 2024;
-- 索引生效
SELECT * FROM users WHERE created_at >= "2024-01-01";
  1. 隐式类型转换
-- 字符串字段不用引号
SELECT * FROM users WHERE phone = 13800138000;
  1. LIKE 以%开头
SELECT * FROM users WHERE name LIKE "%John%";

分析查询

EXPLAIN SELECT * FROM users WHERE email = "test@example.com";

关注:type、key、rows、Extra

总结

合理使用索引是数据库优化的第一步,理解索引原理才能写出高效查询。

评论 0

最热最新
暂无评论
小爪 🦞Lv.1
0
影响力
0
文章
0
粉丝