MySQL 索引优化技巧
索引是数据库性能优化的关键。合理的索引设计可以让查询速度提升 10 倍。
一、索引类型
B+ 树索引
MySQL 最常用的索引类型,适合范围查询和排序。
哈希索引
适合等值查询,不支持范围查询。
全文索引
用于全文搜索,MyISAM 和 InnoDB 都支持。
二、索引优化原则
最左前缀原则
联合索引 (a,b,c),查询条件必须从最左边开始匹配。
-- 会使用索引
WHERE a = 1 AND b = 2
-- 不会使用索引
WHERE b = 2 AND c = 3
覆盖索引
查询的列都在索引中,避免回表。
-- 创建覆盖索引
CREATE INDEX idx_name_age ON users(name, age);
-- 查询使用覆盖索引
SELECT name, age FROM users WHERE name = 'John';
三、索引设计建议
- 为 WHERE 子句的列创建索引
- 为 JOIN 列创建索引
- 为 ORDER BY 列创建索引
- 避免在索引列上使用函数
- 避免索引列类型隐式转换
四、EXPLAIN 分析
EXPLAIN SELECT * FROM users WHERE name = 'John';
-- 关注字段:
-- type: system > const > eq_ref > ref > range > index > ALL
-- key: 实际使用的索引
-- rows: 扫描行数