到目前为止我所理解的是,数据库数据实际上存储在文件中的块中的硬盘上,索引指向实际存储数据的文件块。
现在,我想知道的是如何在索引文件中搜索搜索键,假设我的查询是select empname from employee where empid = 12345
并且我在empid
上有索引然后我认为是&#34 ; 索引文件"将包含所有员工ID。然后如何在那里搜索empid 12345,顺序?
答案 0 :(得分:0)
索引指向实际数据的文件块 存储
非群集索引指向数据实际存储的位置
索引有两种类型:
一个表只能有一个聚簇索引(因为数据只能以一种方式物理存储),但可以有许多非聚簇索引。
使用您描述的索引查找数据的过程称为索引搜索
请考虑下面的图表,它类似于您的示例
索引搜索将从根节点开始(图中的级别2)要找到12345的示例,我们必须通过树的左侧分支向下达到级别1,因为我们要查找的值属于价值范围。
然后我们有多个叶节点在0级找到我们的值(图中显示了三个为了简单,但可能有数百个)图中的每个叶节点都有2000个值,所以我们转到保存12345的那个。我们然后搜索该范围内的每个值并检查它是否为12345.
一旦我们得到了我们的值,接下来会发生什么取决于索引是聚簇索引还是非聚簇索引,如果它是聚簇索引,我们检索该值,如果它是非聚簇索引,我们转到它引用的datapage然后检索该值。