mysql 常量表_mysql优化总结

本文详细介绍了MySQL查询优化的各种方法,包括使用慢查询日志、分析执行计划、理解EXPLAIN的不同类型如id、select_type、type等,以及如何通过索引来提升查询效率。通过对SQL执行计划的解析,探讨了如何避免全表扫描、合理创建和使用索引,以及各种查询类型的优劣。此外,还提到了MySQL的存储引擎选择和分库分表策略,为数据库性能优化提供了全面指导。
摘要由CSDN通过智能技术生成

使用慢查询日志

show variables like '%slow_query_log%'

0.先运行看看是否真的很慢,注意设置SQL_NO_CACHE

1.where条件单表查,锁定最小返回记录表

2.explain查看执行计划,是否与1预期一致(从锁定记录较少的表开始查询)

3.order by limit 形式的sql语句让排序的表优先查

4.了解业务方使用场景

5.加索引时参照建索引的几大原则

6.观察结果,不符合预期继续从0分析

执行计划:

查看SQL执行情况,优化SQL语句

EXPLAIN 有两个变种

explain extended会在 explain 的基础上额外提供一些查询优化的信息。在其后通过show warnings;命令可以得到优化后的查询语句(简单语句的优化,复杂的不行)

eg: explain extended select * from student WHERE id = 1;

5e0a82e9fa659da2cc0c430d96c48806.png

explain partitions相比 explain 多了个 partitions 字段,如果查询是基于分区表的话,会显示查询将访问的分区。

79f565e65f3ca96e83120ccbbb4c7576.png

1.id 列

id 列的编号是 SELECT 的序列号,有几个 SELECT 就有几个 id,并且 id 的顺序是按 SELECT 出现的顺序增长的。id 列越大执行优先级越高,id 相同则从上往下执行,id 为 NULL 最后执行

eg:子查询 EXPLAIN SELECT (SELECT 1 FROM student LIMIT 1) FROM course;

894b88d61cbe7f287a6e7b5f482e6e8f.png

FROM 子句中的子查询 EXPLAIN SELECT id FROM (SELECT id FROM student) AS stu;

2af9b6e8f43a13ac1bdb0f61c69bd14f.png

union查询 EXPLAIN SELECT 1 UNION ALL SELECT 1;

082ac045c2d77e0ecb182b00f484ef41.png

mysql 5.7之后做了优化 5.7之前执行三次,union结果总是放在一个匿名临时表,id是null,,最后执行

2. select_type列

select_type 表示对应行是简

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值