2021年8月15日13:30:11
前置知识:
B站地址:
在线视频: https://www.bilibili.com/video/BV12b411K7Zu?p=243
夏磊2019MySQL高级:P---- P327---P350
其他资料:
思维导图:
本地路径(待分享): F:\03-下载\02-Chrome\MySql高级.mmap
可能需要用到的表:
[可能有教程中所有的表]
链接:https://pan.baidu.com/s/17wzPRmAUtUOCK6vwzAwI7A
提取码:w4h5
复制这段内容后打开百度网盘手机App,操作更方便哦
评论的学习建议:
MySQL高级建议先看夏磊:P---- P327---P350,
再看周阳:---------- P179---P242;
因为夏磊老师讲的比较细, 对初学比较友好, 而阳哥讲的偏理论点和深入(内容也比较多),
适合用来复习和巩固
讲师周阳相关建表资料:
MySQL高级篇(高阳)建表sql语句大全
数据表相关资料:
student库的sql文件
链接:https://pan.baidu.com/s/1BoYGIbJMTKFI6ZdhcXimUw
提取码:q14w
总体架构
MYSQL的架构介绍
索引优化分析
查找截取分析
工具技巧拾遗
主从复制
其他联想
索引优化分析
- MybatisPlus 可以自定义一个后置处理器, 来分析SQL
- 开发者桌面中也写过一下拦截器, 用户做SQL的分析
- 分库分表: 单表500W, 单库 5000W
- DBA 架构师: 需要实际的经验.
聚簇索引和非聚簇索引
聚簇索引并不是一种单独的索引类型, 而是一种数据存储方式.
"聚簇"表示数据行和相邻的键值聚簇的存储在一起.
除了主键索引之外的索引都是非聚簇索引.
其他知识
- 创建索引一般命名规则: idx_age_deptId_empno
- 查看一个表索引: show index from t_emp;
索引分类
- 单值索引
- 唯一索引
- 主键索引
- 复合索引
哪些情况需要创建索引
- 主键自动创建唯一索引
- 频繁作为查询条件的字段应该创建索引
- 查询中与其他表关联的字段, 外键关系创建索引
- 单值/组合索引的选择问题, 组合索引性价比更高
- 查询中排序的字段, 排序字段若通过索引字段去访问将大大提高排序速度
- 查询中统计或分组字段
哪些情况不需要创建索引
- 表记录很少
- 经常增删改的表或字段
- Where条件里用不到的字段不用创建索引
- 过滤性不好的字段不适合创建索引
性能分析
- Expain 字段解析:
- id: 可以判断表的读取顺序. 不同ID, 从大到小, 相同ID, 从上到下.
- type: ALL, index(where后面的筛选没有用到索引), range是需要去优化的
- key_len: where后面的字段用到索引的长度, 命中的越长越好
- rows: 物理扫描的行数
- Extra: order by, group by等是否用到索引
- @@ 是MYSQL的系统变量
索引的使用情况
- ALL: 全表扫描是需要去避免的, Full Table Scan, 将遍历全表以找到匹配的行
- index: SQL 展现的字段使用了索引但是没有通过索引进行过滤, 一般是使用了覆盖索引或是利用索引进行了排列分组.
- range: 只检索给定范围的行, 使用一个索引来选择行.
SQL编程
- CURSOR: 游标
FETCH xxx INTO xxx
ORDER BY
- 无过滤, 不索引.
- 顺序错, 必排序.
- 方向反, 必排序.