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必知必会 新版下载_数据库

MYSQL的架构介绍

索引优化分析

查找截取分析

工具技巧拾遗

主从复制

其他联想

索引优化分析

  • MybatisPlus 可以自定义一个后置处理器, 来分析SQL
  • 开发者桌面中也写过一下拦截器, 用户做SQL的分析

mysql必知必会 新版下载_mysql必知必会 新版下载_02

  • 分库分表: 单表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

  • 无过滤, 不索引.
  • 顺序错, 必排序.
  • 方向反, 必排序.