MySQL——面试问题(二)(大数据学习)

本文深入解析MySQL中的Explain用法,详细解释了各字段的含义,特别是`type`和`extra`字段,强调了全字段匹配、最佳左前缀法则等SQL优化策略,提醒开发者注意避免`filesort`和`temporary`,并提供了SQL优化的10个要点,包括避免`!=`、`%`开头的`LIKE`操作、不使用`or`等,以提高查询效率。
摘要由CSDN通过智能技术生成

五、Explain 用法

在公司中,编写SQL语句,首先要先将需求写出来,不要管优化的事儿。运行一段时间后,查找出来SQL效率不高的语句,单独分析。数据库都有一个功能,叫做慢查询。可以开启慢查询,它就会在运行过程中,将执行速度比较慢的SQL语句给你展示出来,这个时候再针对这样的SQL语句进行分析,看慢在了哪里?

如何分析呢? 使用 Explain 的关键字。

explain select * from tbl_dept  where id = 1;
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+
| id | select_type | table    | type  | possible_keys | key     | key_len | ref   | rows | Extra |
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+
|  1 | SIMPLE      | tbl_dept | const | PRIMARY       | PRIMARY | 4       | const |    1 | NULL  |
+----+-------------+----------+-------+---------------+---------+---------+-------+------+-------+

学习的是如何看懂这个分析的结果,这个结果中有10个关键字。

1、id (掌握)

  • id:   select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序;
  • id如果相同,可以认为是一组,从上往下顺序执行;
  • 在所有组中,id值越大,优先级越高,越先执行 。

2、select_type (了解) 

查询的类型,主要是用于区别普通查询、联合查询、子查询等的复杂查询

  • SIMPLE:简单的 select 查询,查询中不包含子查询或者UNION
  • PRIMARY:查询中若包含任何复杂的子部分,最外层查询则被标记为PRIMARY
  • SUBQUERY:在SELECT或WHERE列表中包含了子查询
  • DERIVED:在FROM列表中包含的子查询被标记为DERIVED(衍生)MySQL会递归执行这些子查询, 把结果放在临时表里。
  • UNION:若第二个SELECT出现在UNION之后,则被标记为UNION;若UNION包含在FROM子句的子查询中,外层SELECT将被标记为:DERIVED
  • UNION RESULT:从UNION表获取结果的SELECT 

3、table (了解) 

  • 显示这一行的数据是关于哪张表的
  • 如果是衍生表,一般是derivered+id作为表名。

4、type 非常重要的指标 

这个指标是说明我们这个SQL是好还是坏的一个非常重要的指标;

system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery >

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值
>