当前位置:数据库 > SQL语言> 正文

聚集索引和主键的区别

时间:2014-8-5类别:数据库

聚集索引和主键的区别

聚集索引和主键的区别

一、主键

 

主关键字(主键,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 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。

     

    标签:
    上一篇下一篇

    猜您喜欢

    热门推荐