索引的本质
索引是一棵 B+ 树。你建索引,本质是在告诉数据库:我经常按这几个字段查,帮我提前排好序。
最左前缀原则
联合索引 (status, published_at):
WHERE status = 'published'✅ 走索引WHERE status = 'published' AND published_at > '2024-01-01'✅ 走索引WHERE published_at > '2024-01-01'❌ 不走索引
一个博客系统的实际索引
-- 前台列表:只查已发布,按时间倒序
KEY idx_posts_status_published (status, published_at)
-- 分类页
KEY idx_posts_category (category_id)
什么时候不要建索引
- 表数据量很小(几百行),全表扫描更快
- 区分度极低的字段(比如性别)
- 写多读少的字段,索引会拖慢写入
索引不是越多越好,是用得上的才有价值。
评论
还没有评论,来说点什么吧。