MySQL04-表

前言

在InnoDB存储引擎中,表都是根据主键的顺序组织存放的,这种存储方式的表称为索引组织表(index organized table)。在InnoDB存储引擎表中,每张表都有一个主键,如果创建表的时候没有显示的定义主键,InnoDB存储引擎会按如下方式选择或创建主键

  • 首先判断表中是否有非空的唯一性索引,如果有,则该列为主键
  • 如果不符合上述条件,InnoDB存储引擎自动创建一个6字节大小的指针

当表中有多个非空唯一索引时,InnoDB存储引擎选择建表时第一个定义的非空唯一索引为主键

InnoDB逻辑存储结构

在这里插入图片描述

约束

约束机制,保证了数据库中数据的完整性

数据的完整性:存储在数据库中的所有数据值均正确的状态。如果数据库中存储有不正确的数据值,则该数据库称为已丧失数据完整性。

InnoDB的几种约束

  1. Primary Key
  2. Unique
  3. Foreign Key
  4. Default
  5. NOT NULL

PRIMARY KEY 约束:
唯一标识数据库表中的每条记录。
主键必须包含唯一的值。
主键列不能包含 NULL 值。
每个表都应该有一个主键,并且每个表只能有一个主键

UNIQUE KEY约束:
唯一标识数据库表中的每条记录。
UNIQUE 和 PRIMARY KEY 约束均为列或列集合提供了唯一性的保证。
PRIMARY KEY 约束拥有自动定义的 UNIQUE 约束。
请注意,每个表可以有多个 UNIQUE 约束,但是每个表只能有一个 PRIMARY KEY 约束

FOREIGN KEY约束:
一个表中的 FOREIGN KEY 指向另一个表中的 UNIQUE KEY(唯一约束的键)

约束和索引的区别?

约束是一个逻辑的概念,用来保证数据的完整性
索引是一个数据结构,既有逻辑上的概念,在数据库中还代表着物理存储的方式。

主键和索引的区别?

主键是一种约束,用来保证数据库中的数据完整性,
由于在数据库中为表定义主键将自动创建主键索引,所以也可以这样理解主键属于索引的一种,主键索引是唯一索引的特定类型。

那主键和唯一索引的区别?

  1. 主键一定是唯一性索引,唯一性索引并不一定就是主键。

  2. 一个表中可以有多个唯一性索引,但只能有一个主键。

  3. 主键列不允许空值,而唯一性索引列允许空值

那么实际使用中都有什么类型的索引呢?

UNIQUE:ADD UNIQUE INDEX('test');
NORMAL:ADD INDEX('test');
FULL TEXT:ADD FULLTEXT INDEX('test');
SPATIAL:ADD SPATIAL INDEX('test');

分区

当MySQL单表记录数过⼤时,数据库的CRUD性能会明显下降,⼀些常⻅的优化措施如下

  1. 垂直分区
    将同一张表中不同列的记录分配到不同的物理文件中
  2. ⽔平分区
    将同一张表中不同行的记录分配到不同的物理文件中(MySQL 支持)

除分区外其他的优化方法

  1. 限定数据的范围
    务必禁⽌不带任何限制数据范围条件的查询语句。⽐如:我们当⽤户在查询订单历史的时候,我们可以控制在⼀个⽉的范围内;
  2. 读/写分离
    经典的数据库拆分⽅案,主库负责写,从库负责读;
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值