MYSQL进阶篇
一.存储引擎
MYSQL体系结构
存储引擎简介
存储引擎特点
InnoDB
MYISAM
Memory
区分
存储引擎选择
绝大部分的场景都是选择InnoDB
二.索引
索引概述
优缺点
索引结构
多路平衡树的原理,建议看黑马mysql进阶的p68理解
B+Tree索引
注意:B+Tree索引是BTree索引的变种,因此在mysql查询数据结构的时候会显示为BTree。
Hash索引
索引分类
思考题
索引语法
案例
SQL性能分析
SQL执行频次
慢查询日志
profile
explain执行计划
各字段中重点需要关注type、possible_key、key、key_len
对于type的各个类型详解,可以看黑马的mysql进阶p78
索引使用
注意:最左前缀法则的sql语句并不需要按照顺序书写,只要存在最左的的索引即可
因此在业务中尽量使用大于等于或者小于等于
or连接的条件
数据分布影响
SQL提示
覆盖索引
思考题
该题针对username和password针对联合索引即可
前缀索引
单列索引和联合索引
不需要回表查询,且要满足最左前缀法则
索引设计原则
总结
三.SQL优化
插入数据
主键优化
页合并和页分裂
建议看一下黑马mysql进阶的p90视频结合ppt理解
主键设计原则
order by优化
注意:order by 和where条件对于索引语句的顺序有差别,使用where的时候,where后面的条件可以不需要顺序,只要出现满足最左前缀法则即可;但是order by后面的条件必须要也满足最左前缀法则的顺序才行
可以看到,当两个条件的索引排序规则不同时,需要具体指定排序规则
show variables like ‘sort_buffer_size’;
group by优化
limit优化
count优化