数据库索引(Index)能加快查询,本质上是因为它改变了数据的“查找方式”,把全表逐行扫描变成了有结构的高效定位。下面从原理到类比逐步说明。
假设有一张用户表 users,有 1000 万行:
SELECT * FROM users WHERE name = '张三';
没有索引时,数据库只能:
name = '张三'时间复杂度:O(N)
数据越多,查询越慢。
索引相当于书的目录或字典的拼音表。
例如对 name 建索引:
CREATE INDEX idx_name ON users(name);
数据库会额外维护一个结构(通常是 B+ 树):
name → 行位置
-------------------
李四 → 第 102 行
张三 → 第 58 行
王五 → 第 999 行
查询时:
'张三'时间复杂度:O(log N)
数据库索引常用 B+ 树,原因包括:
>、<、BETWEEN索引虽快,但有代价:
所以:
索引是“用空间换时间,用写性能换读性能”
索引通过预排序 + 树形结构,把“线性查找”变成“对数查找”,从而大幅减少磁盘访问和数据扫描量,加快查询。
如果你愿意,我也可以讲:
LIKE '%xx' 用不到索引免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。