指数build议

作为一个理论上的数据库问题,如果你被问及“你会提出什么样的索引?为什么? 是来自primaryclusteringsecondary指数的答案吗? 我们怎么知道我们是否应该介绍其中的一种与B-Tree

这应该是从一个简单的索引的angular度来看,因为我所要求的课程材料与索引相关,在这里我介绍了一些介绍性的材料。

primary索引和secondary索引与b-treehash索引正交,并且这两个索引都与clustered non-clustered索引和non-clustered索引正交。

  • 第一类指数是逻辑指数。 它们是关于数据结构的高级指标。 主键应该唯一标识你的数据,这意味着它应该是数据库理论所说的“候选键”之一。 二级索引用于加快对除主索引之外的其他字段的查询,并且它们不需要是候选键。

  • 第二类是特定的索引实现,适合稍微不同的查询。 b-tree可以满足hash不能的范围查询( WHERE c > 3 AND c < 7 )。 然而,在精确查询( WHERE c = 5 )的平均情况下, hash是O(1)(恒定时间),而b-tree总是O(lg n)(对数时间)。 b-treehash都是定义良好的数据结构,但它们与您的实际数据很less有关。

  • 第三类定义整个表是否按照索引的sorting顺序在磁盘上sorting。 如果是这种情况,则称为clustered索引。

正如你所看到的,一个索引可以是一个primary clustered b-tree或者一个primary clustered hash或者从这三个不同类中抽取的其他组合。


如果你被问及要引入哪个指标,答案将首先来自第一类。 问题可能是关于模式。 这至less是你的出发点。 只有当你确定要引入什么索引时,你才需要考虑它们是否应该是B树,聚类等等。第一类是合乎逻辑的,与你如何使用数据密切相关。 其他的是实现细节。