MySQL 索引到底该怎么建

本文目录
  1. 索引的本质
  2. 最左前缀原则
  3. 一个博客系统的实际索引
  4. 什么时候不要建索引

索引的本质

索引是一棵 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)

什么时候不要建索引

  • 表数据量很小(几百行),全表扫描更快
  • 区分度极低的字段(比如性别)
  • 写多读少的字段,索引会拖慢写入

索引不是越多越好,是用得上的才有价值。

评论

还没有评论,来说点什么吧。

发表评论