我是靠谱客的博主 复杂书本,最近开发中收集的这篇文章主要介绍数据库键(key)、主键(primaryKey)、索引(index)、唯一索引(uniqueIndex)区别,觉得挺不错的,现在分享给大家,希望可以做个参考。

概述

1、键:key,数据库的物理结构,一是约束(偏重于约束和规范数据库的结构完整性),二是索引(辅助查询用的)。包括:primary key, unique key, foreign key(主键/唯一键/外键)。                                         

1)primary key(主键):
一个表只允许有一个主键;
可以定义一列或多列为主键;
不允许为null,不允许有重复值;
可以作为外键;
主键自动创建聚簇索引;
选择:主键值应该不发生更改,否则外键相关的表都要修改
2)unique key(唯一键):
一个表可以有多个唯一键;
可以定义一列或多列为唯一键;
只能有一个null值记录;不允许有重复值;
可以作为外键;
自动创建非聚簇索引;
选择:唯一键应该很少发生更改。
3)foreign key(外键):使得两张表关联,保证数据的一致性和级联操作
必须是另外一张表的主键或唯一键;
2、索引 :index,数据库的物理结构,它只是辅助查询的,创建时会在另外的表空间(mysql中的innodb表空间)以一个类似目录的结构存储。如下:

建库时都会有一个默认的schema规范库,库里包括键、索引等表。包括主键索引、唯一索引、普通索引、全文索引。

1)主键索引:
不允许有null,值唯一,聚合索引(索引直接找到一条记录)
建表时指定了主键,就会自动创建主键索引;
  一张表只有一个主键索引;
2)唯一索引:
允许有null,索引列值唯一;
一张表可以有多个唯一索引;
3)普通索引:
允许null,不唯一,非聚合索引(索引直接找到主键值,根据主键索引找到一条记录)
4)全文索引:
仅适用于 CHAR, VARCHAR和 TEXT列
5)聚簇索引:一个索引项直接对应实际数据记录的存储页,可谓“直达”;一个表只能有一个聚簇索引(理由:数据一旦存储,顺序只能有一种)。
6)非聚簇索引:非聚簇索引的二级索引首先查到是主键值,然后InnoDB再根据查到的主键值通过主键索引找到相应的数据块。查找数据块不是“直达”。
3、建索引的条件:
表的主键、外键必须有索引;
经常出现在Where子句中的字段,特别是大表的字段,应该建立索引;
索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替;
频繁进行数据操作的表,不要建立太多的索引;
 
索引多建在查询条件的字段和经常用于排序的字段。

最后

以上就是复杂书本为你收集整理的数据库键(key)、主键(primaryKey)、索引(index)、唯一索引(uniqueIndex)区别的全部内容,希望文章能够帮你解决数据库键(key)、主键(primaryKey)、索引(index)、唯一索引(uniqueIndex)区别所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(42)

评论列表共有 0 条评论

立即
投稿
返回
顶部