怎么理解聚集索引和非聚集索引
admin
2023-07-02 07:05:08

怎么理解聚集索引和非聚集索引

怎么理解聚集索引和非聚集索引图1

1、聚集索引是指数据库表行中数据的物理顺序与键值的逻辑索引顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。例如汉语字典的正文本身就是一个聚集索引。

2、非聚集索引是一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。非聚集索引的叶层不包含数据页。 相反,叶节点包含索引行。每个索引行包含非聚集键值以及一个或多个行定位器,这些行定位器指向有该键值的数据行。 非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。

聚集索引和非聚集索引分别是什么意思啊

聚集索引和非聚集索引的根本区别:

1、表记录的排列顺序和与索引的排列顺序是否一致。

2、聚集索引一个表只有一个,非聚集索引一个表可以存在多个。

3、聚集索引存储记录是物理上连续存在,非聚集索引是逻辑上的连续。

聚集索引优点:

1、以最快的速度缩小查询范围。

2、以最快的速度进行字段排序。

聚集索引使用场合:

1、此列包含有限数目的不同值。

2、查询的结果返回一个区间的值。

3、查询的结果返回某值相同的大量结果集。

非聚集索引优点:

1、非聚集索引比聚集索引层次多。

3、添加记录不会引起数据顺序的重组。

非聚集索引使用场合:

1、此列包含了大量数目不同的值。

2、查询的结束返回的是少量的结果集。

聚集索引和非聚集索引的区别有哪些方面

1、含义上的区别

聚集索引是指数据库表行中数据的物理顺序与键值的逻辑(索引)顺序相同。一个表只能有一个聚集索引,因为一个表的物理顺序只有一种情况,所以,对应的聚集索引只能有一个。

非聚集索引是一种索引,该索引中索引的逻辑顺序与磁盘上行的物理存储顺序不同。

2、从行定位器的性质上来区别

非聚集索引可以在有聚集索引的表、堆集或索引视图上定义。如果表有聚集索引,或者索引在索引视图上,则行定位器就是行的聚集索引键。

如果表是堆集,即非聚集索引,行定位器就是指向行的指针。该指针用文件标识符 (ID)、页码和页上的行数生成。

怎么理解聚集索引和非聚集索引图2

3、应用上的区别

聚集索引适合应用于含有大量非重复值的列;使用BETWEEN,>,>=,<或<=返回一个范围值的列;被连续访问的列;返回大型结果集的查询;经常被使用连接或GROUP BY子句的查询访问的列。

非聚集索引适用于经常被分组排序的列;大数目的不同值;频繁更新的列;外键列;主键列;频繁修改索引列。

mysql聚簇索引和非聚簇索引的区别

存储特点的区别:

聚集索引。表数据按照索引的顺序来存储的,也就是说索引项的顺序与表中记录的物理顺序一致。对于聚集索引,叶子结点即存储了真实的数据行,不再有另外单独的数据页。 在一张表上最多只能创建一个聚集索引,因为真实数据的物理顺序只能有一种。

非聚集索引。表数据存储顺序与索引顺序无关。对于非聚集索引,叶结点包含索引字段值及指向数据页数据行的逻辑指针,其行数量与数据表行数据量一致。

怎么理解聚集索引和非聚集索引图3

总结一下:聚集索引是一种稀疏索引,数据页上一级的索引页存储的是页指针,而不是行指针。而对于非聚集索引,则是密集索引,在数据页的上一级索引页它为每一个数据行存储一条索引记录。

更新表数据

1、向表中插入新数据行

如果一张表没有聚集索引,那么它被称为 “堆集”(Heap)。这样的表中的数据行没有特定的顺序,所有的新行将被添加到表的末尾位置。

而建立了聚簇索引的数据表则不同:最简单的情况下,插入操作根据索引找到对应的数据页,然后通过挪动已有的记录为新数据腾出空间,最后插入数据。如果数据页已满,则需要拆分数据页,调整索引指针(且如果表还有非聚集索引,还需要更新这些索引指向新的数据页)。而类似于自增列为聚集索引的,数据库系统可能并不拆分数据页,而只是简单的新添数据页。

2、从表中删除数据行

对删除数据行来说:删除行将导致其下方的数据行向上移动以填充删除记录造成的空白。如果删除的行是该数据页中的最后一行,那么该数据页将被回收,相应的索引页中的记录将被删除。对于数据的删除操作,可能导致索引页中仅有一条记录,这时,该记录可能会被移至邻近的索引页中,原索引页将被回收,即所谓的“索引合并”。

聚集索引和非聚集索引的区别是什么?

聚簇索引是将索引和整条记录存放在一起,找到索引就找到了记录。非聚簇索引只存储索引字段和记录所在的位置,通过索引找到记录所在的位置,然后再根据记录所在位置去获取记录。

一般来讲一堆数据记录最多只能有一个聚簇索引,但可以有很多非聚簇索引。

怎么理解聚集索引和非聚集索引图4

两者的优缺点对比

聚簇索引的查找记录要比非聚簇索引块,因为聚簇索引查找到索引就查找到了数据位置,而非聚簇索引查找到索引之后,根据记录的数据地址,再去查找数据。

一个数据表只能有一个聚簇索引,但可以有多个非聚簇索引。

聚簇索引和非聚簇索引都可以加快查询速度,但同时也都对写入速度会有影响;聚簇索引对写入的速度影响更大一些。

两者使用场景

InnoDB的主键使用的都是聚簇索引,而MyASM无论是主键索引还是二级索引,使用的都是非聚簇索引。

聚集索引插入数据时速度要慢(时间花费在“物理存储的排序”上,也就是首先要找到位置然后插入),查询数据比非聚集数据的速度快。

什么索引只能在数据库表存在

是唯一索引、主键索引和聚集索引,只能在数据库表存在。

其中,一个数据库表只能有一个聚集索引,可以有多个非聚集索引。聚集索引基于数据行的键值在表内排序和存储这些数据行。

每个表只能有一个聚集索引,因为数据行本身只能按一个顺序存储。非聚集索引包含索引键值和指向表数据存储位置的行定位器。

以上就是关于怎么理解聚集索引和非聚集索引的全部内容,以及怎么理解聚集索引和非聚集索引的相关内容,希望能够帮到您。

相关内容

热门资讯

苗族的传统节日 贵州苗族节日有... 【岜沙苗族芦笙节】岜沙,苗语叫“分送”,距从江县城7.5公里,是世界上最崇拜树木并以树为神的枪手部落...
世界上最漂亮的人 世界上最漂亮... 此前在某网上,选出了全球265万颜值姣好的女性。从这些数量庞大的女性群体中,人们投票选出了心目中最美...
猫咪吃了塑料袋怎么办 猫咪误食... 你知道吗?塑料袋放久了会长猫哦!要说猫咪对塑料袋的喜爱程度完完全全可以媲美纸箱家里只要一有塑料袋的响...
长白山自助游攻略 吉林长白山游... 昨天介绍了西坡的景点详细请看链接:一个人的旅行,据说能看到长白山天池全凭运气,您的运气如何?今日介绍...