索引之所以能提升数据库(或其他数据存储系统)的查询速度,核心原因在于它改变了数据的查找方式,把“全量扫描”变成了“有结构的快速定位”。下面从原理到类比逐步说明。
假设有一张用户表,有 1000 万行数据:
id | name | age
1 | 张三 | 20
2 | 李四 | 25
...
10000000 | 王五 | 30
执行查询:
SELECT * FROM user WHERE name = '王五';
没有索引时:
这就是“全表扫描”,数据量越大越慢。
如果给 name 字段建了索引,数据库会额外维护一种有序结构(通常是 B+ 树)。
索引(name):
李四 -> 行2
王五 -> 行10000000
张三 -> 行1
查询:
SELECT * FROM user WHERE name = '王五';
数据库可以:
王五 对应的行位置时间复杂度:O(log N)
索引也会带来成本:
索引通过有序结构和高效查找算法,把“逐行扫描”变成“精准定位”,从而大幅减少数据访问量,提升查询速度。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。