Mysql索引底层实现
一、Mysql底层数据结构:B+树
1. 索引的最左前缀原则:mysql建立多列索引(联合索引)有最左前缀的原则,即最左优先。
2. explain(sql执行计划):避免全表扫描,尽量走索引。
2.1 type: system > const > eq_ref > ref > range(范围) > index(索引) > all (性能好->差)
3.索引
3.1 索引类型
1) 普通索引:仅加速查询
2) 唯一索引:加速查询 + 列值唯一(可以有null)
3) 主键:加速查询 + 列值唯一(不可以有null)+ 表中只有一个
4) 组合索引:多列值组成一个索引,专门用于组合搜索,其效率大于索引合并
5) 全文索引:对文本的内容进行分词,进行搜索
3.1 主键和唯一索引的区别:主键是一种约束,唯一索引是一种索引
1)唯一性索引列可以有空值, 而主键列不允许为空值。
2)一个表只能创建一个主键,但是可以创建多个唯一索引。
3)主键创建后一定包含一个唯一性索引,唯一性索引不一定就是主键。
4)主键可以被其他表引用为外键,而唯一索引不能。
二、Mysql锁与事务隔离级别