【问题标题】:Clustered Index Description聚集索引说明
【发布时间】:2020-03-03 03:58:08
【问题描述】:

我知道聚集索引模仿表中的物理记录,而非聚集索引通过内存中的地址访问数据。术语“指针”在描述非聚集索引时使用了很多,但是说聚集索引指向实际数据是否准确。还是仅在引用非聚集索引时才保留“指向”?我认为在描述聚集索引时只“指向实际数据”是可以接受的,因为我指的不是内存地址或指针本身。我在工作中经常处理索引,并经常向初级同事提供解释。我以前使用过上述术语,但如果措辞正确,我从来没有肯定过。

【问题讨论】:

标签: sql-server clustered-index


【解决方案1】:

掌握索引概念的最简单方法是将它们与现实生活中使用的索引进行比较。

聚集索引的功能类似于老式电话簿,按城市、姓氏、名字排序。这意味着如果您需要在 Tulsa 找到 Skiguy98 的记录,并在 Phoenix 打开这本书,您知道您必须继续前进。如果您打开的下一页是情人节,您需要向后移动。一旦你点击 Tulsa,找到有 SchmitzIT 记录的页面,你就知道你需要再往下移动才能达到 Skiguy98 的记录。

换句话说,因为有一种物理分类机制,它可以让您非常快速地找到您要查找的内容。但是,这意味着索引需要保持最新,并且偶尔需要进行碎片整理以保持优化。

相比之下,非聚集索引就像一本书末尾的索引,它包含指向书中包含您要查找的术语的页面的指针。因此,如果您正在寻找“聚集索引”,该索引会告诉您可以在第 5、25、48 和 50 页找到该术语。然后您需要浏览这些页面,并在这些页面上找到实际的术语。

如果您的表根本没有索引,则称为堆。想到这一点的最简单方法是你得到一本书,它只是一张纸的集合。所有页面都按随机顺序打乱。每当进行演示时,我喜欢将一沓纸扔在地板上,然后告诉参与者找到包含“聚集索引”一词的所有页面,然后去喝咖啡。

【讨论】:

  • 我很欣赏索引的背景。但是,我的问题主要是指我在向同事描述聚集索引时使用的术语。我知道聚集索引与实际数据、排序和所有内容相匹配。但是说聚集索引“指向”实际数据是一个延伸。我已经看到使用指针解释非聚集索引,所以仅使用术语“点”,我是否错误地描述了聚集索引?
  • 嗯,在某种程度上是正确的。聚集索引页可以指向索引页上的数据行,但也可以指向另一个索引页。来源:docs.microsoft.com/en-us/sql/relational-databases/…
猜你喜欢
  • 2013-08-07
  • 2021-01-14
  • 2011-12-16
  • 2011-02-11
  • 1970-01-01
  • 2020-08-04
相关资源
最近更新 更多