«

MySQL 索引优化技巧

时间:2026-10-8 07:08     作者:emer     分类: 无


MySQL 索引优化技巧

索引是数据库性能的关键,建对了快10倍,建错了反而更慢。这篇讲实战技巧。

1. 索引类型

普通索引: 最基本的索引,没有限制
唯一索引: 列值不能重复
主键索引: 特殊的唯一索引,一张表只能一个
联合索引: 多个字段组成的索引

2. 建索引原则

1)where 条件经常用的字段建索引

-- 常用查询
SELECT * FROM users WHERE email = 'xxx@qq.com';

-- 给 email 建索引
CREATE INDEX idx_email ON users(email);

2)联合索引最左前缀原则

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

-- 能用索引
WHERE name = '张三'
WHERE name = '张三' AND age = 25

-- 不能用索引(跳过了name)
WHERE age = 25

3)避免建太多索引

3. 索引失效场景

1)不要在索引字段上做运算

-- 坏(索引失效)
SELECT * FROM users WHERE age + 1 = 26;

-- 好
SELECT * FROM users WHERE age = 25;

2)不要用函数

-- 坏
SELECT * FROM users WHERE DATE(create_time) = '2026-10-01';

-- 好
SELECT * FROM users WHERE create_time >= '2026-10-01' AND create_time < '2026-10-02';

3)like 前导模糊

-- 坏(用不到索引)
SELECT * FROM users WHERE name LIKE '%张%';

-- 好
SELECT * FROM users WHERE name LIKE '张%';

**4)避免 select ***

-- 坏(查所有字段,可能回表)
SELECT * FROM users WHERE name = '张三';

-- 好(覆盖索引)
SELECT id, name FROM users WHERE name = '张三';

4. 查看索引使用

-- 查看表索引
SHOW INDEX FROM users;

-- 用 explain 分析
EXPLAIN SELECT * FROM users WHERE name = '张三';

重点看:

5. 总结

索引优化记住:

索引是数据库优化的第一步,做好了性能提升很大。

标签: MySQL 数据库 索引 优化 性能