聚集索引和主键的区别
类别:数据库 浏览量: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如何优化索引)
- mysql索引为什么是b+树(mysql 使用B+树索引有哪些优势)
- 数据库创建索引的注意事项
- mysql怎么创建联合索引(mysql的联合索引复合索引的实现)
- mysql复合索引会包含哪些索引(MySQL查询冗余索引和未使用过的索引操作)
- dedecms标签怎么用(浅析DedeCMS GBK版安装sphinx全文索引无法查询无结果的解决方法)
- flask快速开发框架(手把手教你使用Flask搭建ES搜索引擎预备篇)
- mysql索引失效的几种情况(MySql范围查找时索引不生效问题的原因分析)
- mysql索引优化有哪些(MySQL如何基于Explain关键字优化索引功能)
- pandas如何删除索引列(pandas DataFrame 删除重复的行的实现方法)
- mysql索引的机制(Mysql索引选择以及优化详解)
- 最全面的mysql索引详解(MySQL 全文索引使用指南)
- 查看mysql索引缓存(MySQL查询缓存的小知识)
- sqlserver索引实例(SQL Server索引的原理深入解析)
- sql server重建索引
- 终于有人将mysql 索引讲清楚了(MySQL 索引的一些细节分享)
- 大事件 合肥四中火了(大事件合肥四中火了)
- 翼龙贷组织出借人调研 感受鄱阳 借 来的致富路(翼龙贷组织出借人调研)
- 2023新国风戏曲教育寒假集训班汇报演出《戏娃闹元宵》图文报道(2023新国风戏曲教育寒假集训班汇报演出戏娃闹元宵图文报道)
- 九儿《狐踪谍影》出演热血女特警,戏份杀青受关注(九儿狐踪谍影出演热血女特警)
- 红色代表什么(红色代表什么寓意)
- 蓝天代表什么(蓝天代表什么生肖)
热门推荐
- VS中打开.ashx文件
- docker shell教学(docker安装rockerChat设置聊天室的详细步骤)
- css不显示滚动条设置(css隐藏移动端滚动条并且ios上平滑滚动的方法)
- 云服务器性能怎么判断(怎么判断云服务器适合自己的企业呢?)
- dedecms增加导航内容(织梦DEDECMS中让近三天发布的文章显示红色日期或加上new字或小图片的方法)
- python的4种数字变量(Python将字符串常量转化为变量方法总结)
- ios键盘字符预览怎么关闭(详解通过focusout事件解决IOS键盘收起时界面不归位的问题)
- dede模板本地部署(dedecms5.7首页和列表页模板中动态调用文章浏览次数的方法)
- mysql简单查询基本语句(详解MySQL 查询语句的执行过程)
- linux后台运行程序的命令(在后台运行Linux命令的方法)