温馨提示×

温馨提示×

您好,登录后才能下订单哦!

密码登录×
登录注册×
其他方式登录
点击 登录注册 即表示同意《亿速云用户服务条款》

索引为什么能提升查询速度

发布时间:2026-11-01 19:49:21 来源:亿速云 阅读:87 作者:小樊 栏目:数据库

索引之所以能提升数据库(或其他数据存储系统)的查询速度,核心原因在于它改变了数据的查找方式,把“全量扫描”变成了“有结构的快速定位”。下面从原理到类比逐步说明。


一、没有索引时:全表扫描

假设有一张用户表,有 1000 万行数据:

id | name | age
1  | 张三 | 20
2  | 李四 | 25
...
10000000 | 王五 | 30

执行查询:

SELECT * FROM user WHERE name = '王五';

没有索引时:

  • 数据库必须从第 1 行开始,一行一行往后读
  • 最坏情况要读 1000 万行
  • 时间复杂度:O(N)

这就是“全表扫描”,数据量越大越慢。


二、有索引时:像查字典一样

如果给 name 字段建了索引,数据库会额外维护一种有序结构(通常是 B+ 树)。

索引结构示例(简化)

索引(name):
李四 -> 行2
王五 -> 行10000000
张三 -> 行1

查询:

SELECT * FROM user WHERE name = '王五';

数据库可以:

  1. 直接在索引中“二分查找”
  2. 快速定位到 王五 对应的行位置
  3. 只读取那一行数据

时间复杂度:O(log N)


三、为什么索引这么快(关键技术点)

1. 有序性

  • 索引按字段值排序
  • 可用二分查找、范围查找
  • 类似字典的拼音目录

2. B+ 树结构(最常见)

  • 高度很低(几层就能存上亿数据)
  • 一次查询只需少量磁盘 IO
  • 叶子节点形成链表,支持范围查询

3. 减少磁盘 IO

  • 数据库最慢的是“读磁盘”
  • 索引体积小,常驻内存或少量 IO 即可加载
  • 避免扫描整张表

四、生活类比

  • 没有索引:在一本没有目录的书中找“数据库”这个词,只能从头翻到尾
  • 有索引:直接看目录 → 第 120 页 → 翻过去

五、索引不是万能的

索引也会带来成本:

  • 占用额外存储空间
  • 插入 / 更新 / 删除变慢(要维护索引)
  • 不合理索引反而拖慢性能

六、一句话总结

索引通过有序结构和高效查找算法,把“逐行扫描”变成“精准定位”,从而大幅减少数据访问量,提升查询速度。

如果你愿意,我也可以讲:

  • B+ 树 vs 哈希索引
  • 为什么 Like ‘%xx’ 用不到索引
  • 什么字段适合建索引
向AI问一下细节

免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。

AI
助
手