数据库键(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子句中的字段,特别是大表的字段,应该建立索引;
索引应该建在小字段上,对于大的文本字段甚至超长字段,不要建索引;
复合索引的建立需要进行仔细分析;尽量考虑用单字段索引代替;
频繁进行数据操作的表,不要建立太多的索引;
 
索引多建在查询条件的字段和经常用于排序的字段。
### 数据库索引功能概述 #### 主键索引的功能与作用 主键索引用于唯一标识表中的每一行记录,确保每条记录具有唯一的标识符。这种索引基于特定字段构建,并采用 B+ 树数据结构来存储管理数据[^1]。当通过主键进行查询时,系统能够高效定位目标记录所在的物理位置,从而显著提升检索效率。 #### 唯一索引的功能与作用 唯一索引同样保证了所定义列内值的唯一性,但允许存在一个 NULL 值。这意味着在一个设置了唯一约束的列中,除了一条可选的NULL记录之外,其他任何两条记录都不能拥有相同的值。对于某些应用场景来说,这提供了额外的数据完整性保障措施[^2]。然而需要注意的是,在涉及频繁更新操作的情况下,由于需要即时验证唯一性的特性,可能会导致性能上的劣势[^3]。 #### 普通索引的功能与作用 普通索引是最常见的索引形式之一,它并不强制要求被索引字段内的值保持唯一性。因此可以在同一张表格上针对不同属性创建多个此类索引以优化多种类型的查询请求。尽管如此,相较于唯一索引而言,普通索引在处理大量写入操作时表现得更为出色,因为它们可以延迟实际的数据变更直到必要时刻再同步至磁盘文件系统中去。 ```sql -- 创建带有主键唯一索引以及普通索引的示例表 CREATE TABLE example_table ( id INT NOT NULL AUTO_INCREMENT, name VARCHAR(50), email VARCHAR(100) UNIQUE, -- 设置email列为唯一索引 age INT, PRIMARY KEY (id), -- 将id设置为主键 INDEX idx_age (age) -- 为age列创建普通索引 ); ```
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值