聚集索引和主键的区别
类别:数据库 浏览量:2898
时间:2014-8-5 聚集索引和主键的区别
聚集索引和主键的区别一、主键
主关键字(主键,primary key)是被挑选出来,作表的行的唯一标识的候选关键字。一个表只有一个主关键字。主关键字又可以称为主键。 主键可以由一个字段,也可以由多个字段组成,分别成为单字段主键或多字段主键。又称主码。并且它可以唯一确定表中的一行数据,或者可以唯一确定一个实体。
主键是唯一的,所以创建了一个主键的同时,也就这个字段创建了一个唯一的索引, 唯一索引实际上就是要求指定的列中所有的数据必须不同。这个索引可以是聚集索引,也可以是非聚集索引。所以在一个(或一组)字段上有主键,只能说明他上面有个索引,但不一定就是聚集索引。如果不加NONCLUSTERED和CLUSTERED关键字,默认建的是聚集索引。
主键一唯一索引的区别:
(1)、一个表的主键只能有一个,而唯一索引可以建多个。
(2)、主键可以作为其它表的外键。
(3)、主键不可为null,唯一索引可以为null。
主键作用
二、聚集索引
索引的作用
1、帮助检索数据;
2、提高联接效率;
3、节省ORDER BY、GROUP BY的时间;
4、保证数据唯一性(仅限于唯一索引)。
适用情况
6、聚集索引尽量建立在值不会发生变更的列上,否则会带来非聚集索引的维护
三、聚集索引和主键的区别
主键 | 聚集索引 | |
用途 | 强制表的实体完整性 | 对数据行的排序,方便查询用 |
一个表多少个 | 一个表最多一个主键 | 一个表最多一个 |
是否允许多个字段来定义 | 可以 | 可以 |
是否允许 null 数据行出现 |
如果要创建的数据列中数据存在null,无法建立主键。 创建表时指定的 PRIMARY KEY 约束列隐式转换为 NOT NULL。 |
没有限制建立聚集索引的列一定必须 not null . 也就是可以列的数据是 null 参看最后一项比较 |
是否要求数据必须唯一 | 要求数据必须唯一 | 数据即可以唯一,也可以不唯一。看你定义这个索引的 UNIQUE 设置。 |
创建的逻辑 |
数据库在创建主键同时,会自动建立一个唯一索引。 如果这个表之前没有聚集索引,同时建立主键时候没有强制指定使用非聚集索引,则建立主键时候,同时建立一个唯一的聚集索引 |
如果未使用 UNIQUE 属性创建聚集索引,数据库引擎 将向表自动添加一个四字节 uniqueifier 列。 必要时,数据库引擎 将向行自动添加一个 uniqueifier 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。 |
您可能感兴趣
- mysql索引失效的几种情况(Mysql 5.6 "隐式转换"导致的索引失效和数据不准确的问题)
- sqlserver索引实例(SQL Server索引的原理深入解析)
- 聚集索引和非聚集索引的区别有哪些
- Asp.Net中索引器的用法
- pythonpandas提取列索引(Python3.5 Pandas模块缺失值处理和层次索引实例详解)
- mysql索引优化有哪些(MySQL如何基于Explain关键字优化索引功能)
- 面试二叉树问的多吗(面试官:谈谈你对索引的认知系列之B-树)
- mysql索引失效怎么办(MySQL选错索引的原因以及解决方案)
- python 循环遍历新方法(python for 循环获取index索引的方法)
- mysql千万级别数据查询优化(mysql千万级数据量根据索引优化查询速度的实现)
- mysql为啥使用b+树(MySQL用B+树作为索引结构有什么好处)
- 聚集索引和主键的区别
- sql server重建索引
- sqlserver索引介绍(浅析SQL Server的聚焦使用索引和查询执行计划)
- flask快速开发框架(手把手教你使用Flask搭建ES搜索引擎预备篇)
- mysql的7种索引(浅入浅出 MySQL 索引)
- 《乡村爱情13》开播,新版刘能以假乱真,编剧思维进入瓶颈(新版刘能以假乱真)
- 当年的 白洋淀战神 练肌肉 嘎子哥也成为行走的荷尔蒙(当年的白洋淀战神)
- 肌肉小子陈康, 亚洲巨兽 黄哲勋,哪个才是你的菜(肌肉小子陈康亚洲巨兽)
- 新闻周刊 青岛网红 赵厂长 编段子一箩筐输出快乐,陪父亲十二载勇斗病魔(新闻周刊青岛网红)
- 44岁夏雨演谋女郎爸,大其24岁却看不出,互动不怕袁泉吃醋(44岁夏雨演谋女郎爸)
- 全椒人,你还记得吗 那年,那人,那网,那些我们的青春记忆(全椒人你还记得吗)
热门推荐
- css长度单位有哪些(聊一聊CSS中的长度单位的使用)
- APP界面设计的建议
- html5canvas曲线图例子(html5利用canvas实现颜色容差抠图功能)
- 网站自动备份工作简报(网站数据自动备份方法)
- videojs播放流媒体(video.js支持m3u8格式直播的实现示例)
- sql中exists怎么用(SQL中Exists的用法)
- sql语句groupby分组后怎么显示(SQL group by去重复且按照其他字段排序的操作)
- js编写简单网页计算器(js实现网页计算器)
- python 时间戳转化为格式(Python datetime和unix时间戳之间相互转换的讲解)
- ASP.NET中Web.config文件的配置