数据库表中索引的力量
在使用数据库时,大多数开发人员都了解索引的概念以及使用索引的原因:加快数据检索速度。但是,索引的真正影响往往只有在比较有索引和没有索引的情况时才会显现出来。
你知道没有索引会发生什么吗?
试想一个有三列的表:姓名、年龄和手机号码。
.png)
现在,考虑一下这个查询:
.png)
如果年龄列没有索引,数据库引擎会
- 检查 WHERE 条件字段是否有索引。
- 如果没有,它将扫描整个表(全表扫描)。
- 对于每一行,它会检查年龄值并返回匹配结果。
这意味着引擎会遍历整个数据结构,这对于大型表来说非常耗时。
索引会发生什么情况?
现在,如果年龄列有索引,流程就会发生巨大变化:
- 引擎会直接进入索引结构。
- 它会找到 Age = 26 的节点。
- 索引指向主表中相应的记录 ID。
- 结果几乎是瞬间获取的。
这就是为什么索引是如此强大的优化工具。
现实生活中的一课
最近,我们遇到了一个有趣的情况,凸显了索引的重要性。
我们的表有 5 条记录,而年龄列是有索引的。然后,我们错误地从索引结构(而不是主表)中删除了两个条目。这两个条目对应的是 ID X001 和 X005,它们的年龄都是 26 岁。
.png)
当我们运行
SELECT ID, Age, EmpId, Mobile, NameFROM Company.Employee WHERE Age = 26
我们预计会有 3 条记录(因为主表中仍有这些记录),但只出现了 2 条记录。
.png)
为什么呢?

.png)


.jpg)
.png)
.png)
.png)
.png)
.png)
.png)
.png)


