如何在"索引文件中搜索搜索关键字"

时间:2017-11-23 22:44:18

标签: mysql sql database oracle

到目前为止我所理解的是,数据库数据实际上存储在文件中的块中的硬盘上,索引指向实际存储数据的文件块。

现在,我想知道的是如何在索引文件中搜索搜索键,假设我的查询是select empname from employee where empid = 12345并且我在empid上有索引然后我认为是&#34 ; 索引文件"将包含所有员工ID。然后如何在那里搜索empid 12345,顺序?

1 个答案:

答案 0 :(得分:0)

  

索引指向实际数据的文件块   存储

非群集索引指向数据实际存储的位置

索引有两种类型:

  • 聚簇索引 - 行物理存储在磁盘中 按索引中指定的顺序。
  • 非聚集索引 - 对数据所在的数据页的引用 存储。

一个表只能有一个聚簇索引(因为数据只能以一种方式物理存储),但可以有许多非聚簇索引。

使用您描述的索引查找数据的过程称为索引搜索

请考虑下面的图表,它类似于您的示例

enter image description here

索引搜索将从根节点开始(图中的级别2)要找到12345的示例,我们必须通过树的左侧分支向下达到级别1,因为我们要查找的值属于价值范围。

然后我们有多个叶节点在0级找到我们的值(图中显示了三个为了简单,但可能有数百个)图中的每个叶节点都有2000个值,所以我们转到保存12345的那个。我们然后搜索该范围内的每个值并检查它是否为12345.

一旦我们得到了我们的值,接下来会发生什么取决于索引是聚簇索引还是非聚簇索引,如果它是聚簇索引,我们检索该值,如果它是非聚簇索引,我们转到它引用的datapage然后检索该值。

Example diagram taken from here