关系数据库使用索引(Index),核心目的只有一个:加快数据的查询速度,同时尽量不显著拖慢写入和维护成本。
下面从“为什么需要”“怎么起作用”“代价是什么”三个角度说明。
关系数据库的数据通常存放在**表(heap / B+树叶子节点)**中,物理上是无序或按插入顺序存放的。
例如:
SELECT * FROM user WHERE id = 10086;
如果没有索引:
这就是全表扫描(Full Table Scan)。
索引类似于:
它保存了:
查询时:
例如 B+树索引:
id=10086
→ 索引树定位
→ 数据行位置
WHERE age = 30
WHERE name LIKE '张%'
没有索引时:
有索引时:
UNIQUE (email)
| 场景 | 无索引 | 有索引 |
|---|---|---|
| 查字典 | 从头翻到尾 | 查目录 |
| 找书 | 逐本翻 | 按分类架 |
| 数据库 | 全表扫描 | 索引定位 |
关系数据库使用索引,是为了在海量数据中,用更小的代价快速定位所需记录,避免低效的全表扫描。
如果你愿意,我也可以讲:
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:is@yisu.com进行举报,并提供相关证据,一经查实,将立刻删除涉嫌侵权内容。