度量快速开发平台-专业、快速的软件定制快开平台

标题: 聚集索引和主键的区别 [打印本页]

作者: 万望    时间: 2020-6-20 23:57
标题: 聚集索引和主键的区别

一、主键


主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。


主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引实际上就是要求指定的列中所有的数据必须不同。这个索引可以是聚集索引,也可以是非聚集索引。所以在一个(或一组)字段上有主键,只能说明他上面有个索引,但不一定就是聚集索引。如果不加NONCLUSTEREDCLUSTERED关键字,默认建的是聚集索引。


主键一唯一索引的区别:

(1)、一个表的主键只能有一个,而唯一索引可以建多个。
(2)、主键可以作为其它表的外键。
(3)、主键不可为null,唯一索引可以为null。


主键作用


1)保证实体的完整性;
2)加快数据库的操作速度;
3)在表中添加新记录时,ACCESS会自动检查新记录的主键值,不允许该值与其他记录的主键值重复;
4) ACCESS自动按主键值的顺序显示表中的记录。如果没有定义主键,则按输入记录的顺序显示表中的记录。

二、聚集索引


聚集索引确定表中数据的物理顺序。聚集索引类似于电话簿,按姓氏排列数据。由于聚集索引规定数据在表中的物理存储顺序,因此一个表只能包含一个聚集索引。但该索引可以包含多个列(组合索引),就像电话簿按姓氏和名字进行组织一样。

聚集索引对于那些经常要搜索范围值的列特别有效。使用聚集索引找到包含第一个值的行后,便可以确保包含后续索引值的行在物理相邻。例如,如果应用程序执行的一个查询经常检索某一日期范围内的记录,则使用聚集索引可以迅速找到包含开始日期的行,然后检索表中所有相邻的行,直到到达结束日期。这样有助于提高此类查询的性能。同样,如果对从表中检索的数据进行排序时经常要用到某一列,则可以将该表在该列上聚集(物理排序),避免每次查询该列时都进行排序,从而节省成本。

索引的作用


1、帮助检索数据;

2、提高联接效率;

3、节省ORDER BY、GROUP BY的时间;

4、保证数据唯一性(仅限于唯一索引)。


适用情况


1、含有大量非重复值的列。
2、使用BETWEEN,>,>=,<或<=返回一个范围值的列
3、被连续访问的列
4、返回大型结果集的查询
5、经常被使用连接或GROUP BY子句的查询访问的列

6、聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护


三、聚集索引和主键的区别


主键聚集索引
用途强制表的实体完整性对数据行的排序,方便查询用
一个表多少个一个表最多一个主键一个表最多一个
是否允许多个字段来定义可以可以
是否允许 null 数据行出现如果要创建的数据列中数据存在null,无法建立主键。
创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。
没有限制建立聚集索引的列一定必须 not null .
也就是可以列的数据是 null
参看最后一项比较
是否要求数据必须唯一要求数据必须唯一数据即可以唯一,也可以不唯一。看你定义这个索引的 UNIQUE 设置。
创建的逻辑数据库在创建主键同时,会自动建立一个唯一索引。
如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,则建立主键时候,同时建立一个唯一的聚集索引
如果未使用 UNIQUE 属性创建聚集索引,数据库引擎 将向表自动添加一个四字节 uniqueifier 列。
必要时,数据库引擎 将向行自动添加一个 uniqueifier 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。



作者: 万望    时间: 2020-6-20 23:59
表通常具有包含唯一标识表中每一行的值的一列或一组列,这样的一列或多列称为表的主键 (PK),用于强制表的实体完整性。聚集索引是一种索引,该索引中键值的逻辑顺序决定了表中相应行的物理顺序。
作者: 陈晓龙    时间: 2020-6-21 13:56
不错,总结得太详细了!




欢迎光临 度量快速开发平台-专业、快速的软件定制快开平台 (http://plat.delit.cn/) Powered by Discuz! X3.2