数据库中的索引到底起什么作用?

2025-06-10

数据库中的索引到底起什么作用?

大家好!在使用数据库的过程中,我意识到在包含大量记录的表上使用索引是多么重要。在本文中,我将解释
在表中添加索引有什么区别。

考虑在 Oracle SQL 数据库中创建下面的学生表。

替代文本

现在我想获取小学学生的详细信息。显然我需要编写一个选择查询。

从学生中选择*,其中学生年级=“小学”;

现在会发生什么?

在内部,它识别列 student_grade 并按顺序搜索与 Primary 匹配的所有记录。

它找到第一条与主表匹配的记录并返回该行。它找到第二条与主表匹配的记录并返回该行。它继续查找主表。跳过第三条记录,找到第四条与主表匹配的记录。现在它停止了吗?没有。它仍然继续查找主表,直到表的末尾。

对于只有 5 行的表来说它看起来很好,但如果我的表有 10000 条记录怎么办?

替代文本

这需要花费很多时间,谁会尊重这样的时间延迟呢?

这时,索引就派上用场了,它可以节省时间。我们都知道索引的意义。它保存参考文献,以便更快地访问。一个常见的例子是教科书的索引,它保存了书中所涵盖主题的页码。

现在让我们在 Student_grade 列上创建一个索引并看看会发生什么。

在学生(student_grade)上创建索引student_student_grade_I;

student_student_grade_I 是索引名称。

在我们的表上添加索引后,会创建一个新的数据结构,用于保存学生成绩以及指向表中原始记录的指针。该数据结构是 BTree,其优势在于所有记录都已排序。索引看起来类似于左下方的表格。

替代文本

现在它找到了 2、3、4 条与 primary 匹配的记录。停止执行,并在 record_pointer 的帮助下返回这些记录。

参考

1)https://www.youtube.com/watch?v=aZjYr87r1b8
2)https://chartio.com/learn/databases/how-does-indexing-work/

鏂囩珷鏉ユ簮锛�https://dev.to/vuchuru27916/what-exactly-does-indexing-in-a-database-do-28a3
PREV
咖啡休息期间的 Vue - 使用带有自定义组件的 v-model。
NEXT
如何将 Android Studio 项目上传到 GitHub?提交前显示文件更改差异