信息发布→ 登录 注册 退出

什么是索引_mysql索引基本作用

发布时间:2026-01-12

点击量:
索引是数据库中用于加速查询的额外结构,通过减少扫描行数、优化排序分组连接、保障唯一性来提升性能,但会增加存储和写操作开销,需合理选择高区分度字段创建。

索引是数据库中一种专门用来加速数据查找的结构,它不改变原始数据,而是额外建立一张“目录表”,里面存着字段值和对应数据行的位置信息。就像查字典时先看拼音或部首目录,而不是一页页翻找,MySQL 用索引跳过大量无关数据,直接定位目标记录。

索引最核心的作用就是减少扫描行数

没有索引时,MySQL 只能从第一行开始逐条比对,这叫全表扫描。表有10万行,最坏情况就要读10万次磁盘;加上索引后,可能只读3~5次就能定位到结果。这是因为索引本身体积小、结构有序(比如B+树),一次I/O能加载更多索引项,大幅提升效率。

索引还能优化排序、分组和连接操作

当查询包含 ORDER BY、GROUP BY 或 JOIN 时,如果相关字段上有索引,MySQL 很可能直接利用索引已有的顺序,避免额外的内存排序或临时表。例如:

  • ORDER BY name:name 列有索引 → 直接按索引顺序返回,无需排序
  • JOIN users ON orders.user_id = users.id:users.id 是主键(自带聚簇索引),orders.user_id 有普通索引 → 连接过程走索引查找,速度快很多

索引也承担约束和唯一性保障功能

主键索引和唯一索引不只是为了查得快,它们同时强制列值不重复。插入或更新时,MySQL 会自动检查索引中是否已存在相同键值,若冲突则报错。这种校验逻辑内嵌在索引机制里,比应用层判断更可靠、更高效。

但索引不是越多越好

每建一个索引,都会带来三方面开销:

  • 额外占用磁盘空间(尤其是大表的长文本字段前缀索引)
  • INSERT/UPDATE/DELETE 时要同步更新索引,写操作变慢
  • 优化器可能因索引过多而选错执行计划,反而拖慢查询

所以索引要建在真正被 WHERE、JOIN、ORDER BY、GROUP BY 频繁使用的字段上,优先选择区分度高(如用户ID)、重复值少的列。

标签:# mysql  # mysql索引  # delete  # 数据库  # 数据库中  # 主键  # 行数  # 就像  # 尤其是  # 就能  # 还能  # 上有  # 很可能  # 越多  
在线客服
服务热线

服务热线

4008888355

微信咨询
二维码
返回顶部
×二维码

截屏,微信识别二维码

打开微信

微信号已复制,请打开微信添加咨询详情!