MySQL 概念(简化)

概念

索引

primary key

主键(PRIMARY KEY)的完整称呼是“主键约束”

  • 每个表只能定义一个主键。
  • 主键值必须唯一标识表中的每一行,且不能为 NULL,即表中不可能存在有相同主键值的两行数据。这是唯一性原则。
  • 一个字段名只能在联合主键字段表中出现一次。
  • 联合主键不能包含不必要的多余字段。当把联合主键的某一字段删除后,如果剩下的字段构成的主键仍然满足唯一性原则,那么这个联合主键是不正确的。这是最小化原则。

unique

它允许您在一个或多个列中强制实现值的唯一性

唯一索引

unique 值不能重复

非唯一索引

可以重复,不要求唯一。

聚集索引

表中记录的物理顺序与键值的索引顺序相同。一个表只能有一个聚集索引。

优点:

  • 是查询速度快,因为一旦具有第一个索引值的记录被找到,具有连续索引值的记录也一定物理的紧跟其后。

缺点:

  • 是对表进行修改速度较慢,这是为了保持表中的记录的物理顺序与索引的顺序一致,而把记录插入到数据页的相应位置,必须在数据页中进行数据重排,降低了执行速度。
  • 在插入新记录时数据文件为了维持 B+Tree 的特性而频繁的分裂调整,十分低效。

场景:

A.某列包含了小数目的不同值。

B.排序和范围查找。

非聚集索引

记录的物理顺序和索引的顺序不一致

场景:

a.此列包含了大数目的不同值;

b.频繁更新的列

组合索引(联合索引)

-- 创建索引
create index idx1 on table1(col1,col2,col3)
-- 查询
select * from table1 where col1= A and col2= B and col3 = C

日志

redo log(重做日志)

循环写入

重做日志,属于物理日志,上面存储的是数据库中最终的内容记录在“某个数据页上做了什么修改“。

bin log(归档日志)

追加写入

归档日志,server层,属于逻辑日志,比如根剧’id’字段查询所有的信息