温馨提示×

温馨提示×

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

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

索引为什么能加快查询

发布时间:2026-09-21 02:01:42 来源:亿速云 阅读:85 作者:小樊 栏目:数据库

数据库索引(Index)能加快查询,本质上是因为它改变了数据的“查找方式”,把全表逐行扫描变成了有结构的高效定位。下面从原理到类比逐步说明。


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

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

SELECT * FROM users WHERE name = '张三';

没有索引时,数据库只能:

  1. 从第一行开始
  2. 一行一行读
  3. 判断 name = '张三'
  4. 直到扫完整个表

时间复杂度:O(N)
数据越多,查询越慢。


二、有索引时:像“目录”一样查

索引相当于书的目录字典的拼音表

例如对 name 建索引:

CREATE INDEX idx_name ON users(name);

数据库会额外维护一个结构(通常是 B+ 树):

name → 行位置
-------------------
李四 → 第 102 行
张三 → 第 58 行
王五 → 第 999 行

查询时:

  1. 先在索引中查找 '张三'
  2. 直接定位到对应行
  3. 不需要扫描全表

时间复杂度:O(log N)


三、为什么 B+ 树索引快?

数据库索引常用 B+ 树,原因包括:

  • 树高度很低(千万级数据通常 3~4 层)
  • 磁盘 IO 少(一次查一层)
  • 数据有序,支持范围查询
  • 叶子节点链表,适合 >、<、BETWEEN

四、索引为什么不能“无限加”

索引虽快,但有代价:

  • 占用空间
  • 写入变慢(INSERT / UPDATE / DELETE 要维护索引)
  • 太多索引反而拖慢系统

所以:

索引是“用空间换时间,用写性能换读性能”


五、一个生活类比

  • 无索引:在图书馆一本一本翻书找内容
  • 有索引:直接查目录,翻到指定页

六、总结一句话

索引通过预排序 + 树形结构,把“线性查找”变成“对数查找”,从而大幅减少磁盘访问和数据扫描量,加快查询。

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

  • 为什么 LIKE '%xx' 用不到索引
  • 联合索引最左匹配原理
  • 为什么有时候索引“失效”
向AI问一下细节

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

AI