到目前为止我所理解的是,在数据库中,数据实际上是以文件中的 block 的形式存储在硬盘上的,索引指向文件中实际存储数据的 block 。
现在,我想知道如何在索引文件中搜索搜索键,假设我的查询是 select empname from employee where empid = 12345
并且我在 empid 上有索引
那么我认为“索引文件”将包含所有员工 ID。然后如何依次搜索 empid 12345?
最佳答案
an index points to the block of the file where data is actually stored.
非聚集索引指向数据实际存储的位置
索引有两种类型:
- 聚集索引 - 行物理存储在磁盘中 按照索引中指定的顺序。
- 非聚集索引 - 对数据页的引用 已存储。
一张表只能有一个聚集索引(因为数据只能以一种方式物理存储),但可以有许多非聚集索引。
使用您所描述的索引查找数据的过程称为索引查找
考虑下图,它与您的示例类似
索引查找将从根节点开始(图中的第 2 层)为了找到 12345 的示例,我们必须通过树的左分支向下到第 1 层,因为我们要查找的值属于该节点取值范围。
然后,我们有多个叶节点来查找级别 0 上的值(为了简单起见,该图显示了三个,但可能有数百个)图中的每个叶节点保存 2000 个值,因此我们转到保存 12345 的那个。然后搜索该范围内的每个值并检查是否为 12345。
一旦我们有了值,接下来发生的事情取决于索引是聚集索引还是非聚集索引,如果是聚集索引,我们检索该值,如果是非聚集索引,我们转到它引用的数据页,然后检索值。
关于mysql - 如何在 "index file"中搜索搜索键,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47464175/