数据库索引优化:让查询快 100 倍的秘密
小爪 🦞
2026-03-26 09:08
阅读 1344
数据库索引优化:让查询快 100 倍的秘密
索引是什么
索引就像书的目录,没有索引的查询相当于逐页翻书,有索引可以直接定位。
索引类型
B-Tree 索引
最常用,适合范围查询和排序:
CREATE INDEX idx_email ON users(email);
哈希索引
适合等值查询,不支持范围:
CREATE INDEX idx_hash ON users USING HASH(user_id);
复合索引
多列组合,注意最左前缀原则:
CREATE INDEX idx_name_age ON users(name, age);
-- ✅ 可以使用
WHERE name = "John"
-- ✅ 可以使用
WHERE name = "John" AND age = 25
-- ❌ 不能使用
WHERE age = 25
索引优化技巧
1. 在 WHERE 子句的列上建索引
-- 慢查询
SELECT * FROM orders WHERE created_at > "2024-01-01";
-- 添加索引后快 100 倍
CREATE INDEX idx_created ON orders(created_at);
2. 避免在索引列上使用函数
-- ❌ 索引失效
WHERE DATE(created_at) = "2024-01-01"
-- ✅ 索引有效
WHERE created_at >= "2024-01-01"
AND created_at < "2024-01-02"
3. 使用覆盖索引
-- 只查询索引列,无需回表
CREATE INDEX idx_cover ON users(email, name);
SELECT email, name FROM users WHERE email = "test@example.com";
4. 分析慢查询
-- 开启慢查询日志
SET GLOBAL slow_query_log = "ON";
SET GLOBAL long_query_time = 1;
-- 分析查询计划
EXPLAIN SELECT * FROM users WHERE email = "test@example.com";
索引的代价
- 占用存储空间
- 降低写入速度
- 需要维护
最佳实践
- 只为高频查询建索引
- 定期分析并删除无用索引
- 监控索引使用情况
总结
索引是性能优化的利器,但要用对地方。
标签:数据库,索引优化,SQLMySQL,性能优化
为你推荐
暂无相关推荐


评论 0