数据库索引能加速查询,本质上是因为它改变了数据的查找方式,把“逐条扫描”变成了“快速定位”。下面从原理到类比逐步说明。
假设有一张用户表 users,有 1000 万行数据:
SELECT * FROM users WHERE name = '张三';
没有索引时:
name这就像你在一本没有目录的书中找某个词,只能一页一页翻。
索引通常是 B+树(最常见) 结构:
CREATE INDEX idx_name ON users(name);
索引内部大致是这样:
root
├── a–f → 指针
├── g–m → 指针
├── n–s → 指针 → 张三
└── t–z → 指针
查询过程:
时间复杂度:O(log n)
以 InnoDB 为例:
| 场景 | 方式 | 效率 |
|---|---|---|
| 无索引 | 翻完整本书 | 慢 |
| 有索引 | 查目录 → 翻到那一页 | 快 |
索引也会带来成本:
INSERT / UPDATE / DELETE 速度数据库索引通过有序的数据结构(如 B+树),把“线性扫描”变成“对数级定位”,从而大幅减少需要访问的数据量,尤其是磁盘 IO,进而加速查询。
如果你愿意,我也可以用画图式结构或结合 MySQL / Oracle / PostgreSQL 具体讲。
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。