为了账号安全,请及时绑定邮箱和手机立即绑定

聚集索引和非聚集索引实际上意味着什么?

聚集索引和非聚集索引实际上意味着什么?

守着星空守着你 2019-06-28 15:09:54
聚集索引和非聚集索引实际上意味着什么?我对DB的了解有限,并且只使用DB作为应用程序员。我想知道Clustered和Non clustered indexes..我搜索了一下,发现:聚集索引是一种特殊类型的索引,它重新排序表中记录的物理存储方式。因此,表只能有一个聚集索引。聚集索引的叶节点包含数据页。非聚集索引是一种特殊类型的索引,其中索引的逻辑顺序与磁盘上行的物理存储顺序不匹配。非聚集索引的叶节点不包含数据页。相反,叶节点包含索引行。我在里面发现的是聚集索引和非聚集索引之间有什么区别?.有人能用通俗易懂的英语解释一下吗?
查看完整描述

3 回答

?
慕虎7371278

TA贡献1802条经验 获得超4个赞

对于聚集索引,行以与索引相同的顺序物理地存储在磁盘上。因此,只能有一个聚集索引。

对于非聚集索引,第二个列表具有指向物理行的指针。您可以有许多非聚集索引,尽管每个新索引都会增加写入新记录所需的时间。

如果要返回所有列,则从聚集索引中读取通常更快。您不必先到索引,然后再到表。

如果需要重新排列数据,写入具有聚集索引的表可能会慢一些。


查看完整回答
反对 回复 2019-06-28
?
炎炎设计

TA贡献1808条经验 获得超4个赞

聚集索引意味着要让数据库在磁盘上存储实际上彼此接近的关闭值。这有利于快速扫描/检索属于某些聚集索引值范围的记录。

例如,您有两个表,Customer和Order:

Customer----------ID
Name
AddressOrder----------ID
CustomerID
Price

如果您希望快速检索一个特定客户的所有订单,您可能希望在Order表的“CustomerID”列上创建一个聚集索引。这样,具有相同CustomerID的记录将被物理地存储在磁盘(群集)上,从而加快了它们的检索速度。

显然,CustomerID上的索引并不是唯一的,所以您要么需要添加第二个字段来“惟一”索引,要么让数据库为您处理这个问题,但这是另一回事。

关于多个索引。每个表只能有一个聚集索引,因为这定义了数据的物理排列方式。如果你想打个比方,想象一下有很多桌子的大房间。您可以将这些表放在一起形成几行,或者将它们全部拉到一起形成一个大型会议桌,但不能同时使用这两种方式。一个表可以有其他索引,然后它们将指向聚集索引中的条目,这些条目最终会说明在哪里找到实际数据。


查看完整回答
反对 回复 2019-06-28
  • 3 回答
  • 0 关注
  • 2183 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
意见反馈 帮助中心 APP下载
官方微信