一、先背执行计划怎么用sqlEXPLAIN SELECT * FROM 表 WHERE 条件;只看 6 个字段id、select_type、type、key、rows、Extra这 6 个搞定SQL 优化 90% 搞定。二、核心字段逐字背诵版必考必用1. id执行顺序口诀id 越大越先执行id 相同从上往下执行。id1主查询id1子查询数字越大优先级越高idNULL最后执行结果集计算2. select_type查询类型只背 4 个SIMPLE简单查询最优SUBQUERY子查询性能差DERIVED衍生表 / 临时表性能差UNION联合查询判断出现 SUBQUERY、DERIVED 要优化3.type访问类型SQL 快不快看它背诵优先级从好到坏plaintextsystem const eq_ref ref range index ALL必须背下来的定义const根据主键 / 唯一索引查询1 行结果最优ref普通索引查询性能优秀range范围查询between、in、合格index遍历索引树一般ALL全表扫描必须优化底线标准生产 SQLtype 必须 range禁止 ALL4.key实际使用的索引key NULL没走索引严重问题key 索引名走了索引key_len索引长度越大表示使用索引字段越多越精准5. rows扫描行数口诀越少越好越小 SQL 越快大表 rows 上万 慢查询6.Extra额外信息优化黄金区只背 5 个最关键Using index【最优】覆盖索引不用回表速度极快Using where使用 where 过滤数据正常Using filesort【严重】文件排序必须优化 原因order by 字段无索引Using temporary【严重】使用临时表必须优化 原因group by 无索引Using where; Using index【完美】覆盖索引 条件过滤三、执行计划判断口诀背诵版plaintext一看 type 是不是 ALL是全表要修改 二看 key 是不是 NULL没索引要创建 三看 Extra 两毒瘤filesort、temporary 必须干掉 四看 rows 越少越好超过千行要优化四、3 秒判断 SQL 是否合格背诵版一条好 SQL执行计划必须满足type range不能是 ALLkey 不为 NULL必须走索引Extra 没有 Using filesort / Using temporaryrows 尽量小五、最常见 4 种坏情况 优化方案背诵1. type ALL全表扫描优化给 where 字段加索引2. key NULL索引失效优化索引列别用函数别隐式转换别违反最左前缀3. ExtraUsing filesort文件排序优化给 order by 字段建联合索引4. ExtraUsing temporary临时表优化给 group by 字段建索引六、终极背诵版一句话总结看 type 防全表看 key 看索引看 Extra 杀排序临时表看 rows 看扫描量。总结你把上面内容背熟就能看懂任何 SQL 执行计划快速定位慢 SQL 原因面试直接满分
MySQL 执行计划(EXPLAIN)背诵版
一、先背执行计划怎么用sqlEXPLAIN SELECT * FROM 表 WHERE 条件;只看 6 个字段id、select_type、type、key、rows、Extra这 6 个搞定SQL 优化 90% 搞定。二、核心字段逐字背诵版必考必用1. id执行顺序口诀id 越大越先执行id 相同从上往下执行。id1主查询id1子查询数字越大优先级越高idNULL最后执行结果集计算2. select_type查询类型只背 4 个SIMPLE简单查询最优SUBQUERY子查询性能差DERIVED衍生表 / 临时表性能差UNION联合查询判断出现 SUBQUERY、DERIVED 要优化3.type访问类型SQL 快不快看它背诵优先级从好到坏plaintextsystem const eq_ref ref range index ALL必须背下来的定义const根据主键 / 唯一索引查询1 行结果最优ref普通索引查询性能优秀range范围查询between、in、合格index遍历索引树一般ALL全表扫描必须优化底线标准生产 SQLtype 必须 range禁止 ALL4.key实际使用的索引key NULL没走索引严重问题key 索引名走了索引key_len索引长度越大表示使用索引字段越多越精准5. rows扫描行数口诀越少越好越小 SQL 越快大表 rows 上万 慢查询6.Extra额外信息优化黄金区只背 5 个最关键Using index【最优】覆盖索引不用回表速度极快Using where使用 where 过滤数据正常Using filesort【严重】文件排序必须优化 原因order by 字段无索引Using temporary【严重】使用临时表必须优化 原因group by 无索引Using where; Using index【完美】覆盖索引 条件过滤三、执行计划判断口诀背诵版plaintext一看 type 是不是 ALL是全表要修改 二看 key 是不是 NULL没索引要创建 三看 Extra 两毒瘤filesort、temporary 必须干掉 四看 rows 越少越好超过千行要优化四、3 秒判断 SQL 是否合格背诵版一条好 SQL执行计划必须满足type range不能是 ALLkey 不为 NULL必须走索引Extra 没有 Using filesort / Using temporaryrows 尽量小五、最常见 4 种坏情况 优化方案背诵1. type ALL全表扫描优化给 where 字段加索引2. key NULL索引失效优化索引列别用函数别隐式转换别违反最左前缀3. ExtraUsing filesort文件排序优化给 order by 字段建联合索引4. ExtraUsing temporary临时表优化给 group by 字段建索引六、终极背诵版一句话总结看 type 防全表看 key 看索引看 Extra 杀排序临时表看 rows 看扫描量。总结你把上面内容背熟就能看懂任何 SQL 执行计划快速定位慢 SQL 原因面试直接满分