Database 数据库如何使用聚集索引定位记录?

Database 数据库如何使用聚集索引定位记录?,database,performance,indexing,Database,Performance,Indexing,在非聚集索引中,每个条目的长度是固定的,因此数据库可以使用二进制搜索在O(nlogn)时间内定位记录地址 由于表具有可变长度的记录,并且聚集索引使用基础表本身进行搜索(或者我错了吗?),数据库如何在O(nlogn)时间内找到特定键的记录 每个条目都是固定长度的 对于真实世界的数据库,情况并非如此 行被分成称为页的组。页面大小固定(~8KB)。它们形成一个树状结构,顶层链接到底层页面的物理位置 这允许从上到下遍历树,在每一步输入相关的分支 聚集索引通常与非聚集索引具有完全相同的物理结构。谢谢您的回

在非聚集索引中,每个条目的长度是固定的,因此数据库可以使用二进制搜索在O(nlogn)时间内定位记录地址

由于表具有可变长度的记录,并且聚集索引使用基础表本身进行搜索(或者我错了吗?),数据库如何在O(nlogn)时间内找到特定键的记录

每个条目都是固定长度的

对于真实世界的数据库,情况并非如此

行被分成称为页的组。页面大小固定(~8KB)。它们形成一个树状结构,顶层链接到底层页面的物理位置

这允许从上到下遍历树,在每一步输入相关的分支


聚集索引通常与非聚集索引具有完全相同的物理结构。

谢谢您的回答。只是为了确保我正确地跟踪你。当我说条目是固定长度时,我指的是索引中的一个条目——对应于表中的一个元组/记录。如果我理解正确的话,我想你是在告诉我整个表被分成多个8KB的页面,以树形结构组织。我们不是在讨论两件不同的事情吗?在下面的网页中,非聚集索引的叶层由索引页组成,而聚集索引的叶层由数据页组成。在我的问题中,我暗示索引页条目是固定长度的,而数据页条目是可变长度的。[@Rajkummasaniayan所有页面都是固定长度的,所有行都是可变长度的。你说“当我说条目是固定长度时,我指的是索引中的一个条目”-否。您可以索引varchar字段,它们的长度将是可变的。;使用树形结构,引擎可以在log N time中查找任何记录的页面。该页面包含一个2字节偏移量的排序数组,该数组位于表示每行开头的页面中。这允许在每个页面内进行二进制搜索。