聚集索引和主键的区别
类别:数据库 浏览量: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 值,使每个键唯一。此列和列值供内部使用,用户不能查看或访问。 |
您可能感兴趣
- sqlserver中复合索引(浅析SQL Server 聚焦索引对非聚集索引的影响)
- mysql索引失效的几种情况(MySql范围查找时索引不生效问题的原因分析)
- mysql 索引表空间(MySQL如何构建数据表索引)
- Asp.Net中索引器的用法
- mysql索引如何使用(MySQL 索引和数据表该如何维护)
- mysql索引优化有哪些(MySQL如何基于Explain关键字优化索引功能)
- mysql索引建立及应用(MYSQL创建索引,这些知识应该了解)
- mysql复合索引会包含哪些索引(MySQL查询冗余索引和未使用过的索引操作)
- 频繁变化字段如何建立索引(跳槽必备之你设计索引的原则是什么?怎么避免索引失效?)
- sqlserver非唯一索引汇总性能(详解SQL Server的聚焦过滤索引)
- sqlserver 高级查询(利用 SQL Server 过滤索引提高查询语句的性能分析)
- mysql left join索引怎么使用(详解mysql 使用left join添加where条件的问题分析)
- 阿里云虚拟主机带公网地址吗(阿里云虚拟主机被搜索引擎爬虫访问耗费大量流量解决方法)
- mysql索引原理及使用(再有人问你MySQL索引原理,就把这篇文章甩给他!)
- sql server重建索引
- mysql的7种索引(浅入浅出 MySQL 索引)
- 泰国旅游攻略(泰国旅游攻略必去景点)
- 越难春卷(越难春卷皮怎么用)
- 休闲VS新古典 办公家居简约设计(办公家居简约设计)
- 15个新成 园 位置公布 深圳龙岗2022年共建花园建设又有大动作(15个新成园位置公布)
- 记者手记 书记带我去 巡街(记者手记书记带我去)
- 富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元 | 美通社(富士胶片集团将向土耳其东南部地震灾民捐赠5000万日元)
热门推荐
- python简易翻译器的运行(Python3.6实现带有简单界面的有道翻译小程序)
- windows安全策略设置sqlserver(SQLServer 错误: 15404,无法获取有关 Windows NT 组/用户 WIN-8IVSNAQS8T7Administrator 的信)
- php如何对文本框输入小数的小数点(PHP保留两位小数的几种方法)
- linux操作系统的关机指令有哪些(Linux系统关机命令之间的区别及用法详解)
- css渐变色动画(详解CSS背景渐变图片transtion过渡效果技巧)
- html5 spellcheck属性
- vue走马灯特效(Javascript结合Vue实现对任意迷宫图片的自动寻路)
- react基础知识详解(如何深入理解React的ref 属性)
- python对列表排序(Python实现对特定列表进行从小到大排序操作示例)
- python怎么进行参数传递(在Python中如何传递任意数量的实参的示例代码)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9