首页 > 数据库 >mysql explain

mysql explain

时间:2024-10-17 21:34:23浏览次数:1  
标签:explain PRIMARY 查询 索引 mysql Using ref id

参考:[MySQL高级 EXPLAIN用法和结果分析](https://blog.csdn.net/why15732625998/article/details/80388236)

explain 分析

  • 表的读取顺序
  • 数据读取操作的操作类型
  • 哪些索引可以使用
  • 哪些索引被实际使用
  • 表之间的引用
  • 每张表有多少行被优化器查询

example sql

explain SELECT count(0)
FROM (SELECT min(h.price_normal)            minPrice
  FROM prod_scenic_spot s
    LEFT JOIN prod_scenic_spot_homestay sh ON sh.scenic_spot_id = s.id
    LEFT JOIN prod_homestay_new h ON h.id = sh.homestay_id
    LEFT JOIN prod_homestay_facility_services hfs ON hfs.homestay_id = h.id
    LEFT JOIN prod_homestay_card hc ON hc.homestay_id = h.id
    LEFT JOIN vip_card c ON c.id = hc.card_id AND c.status = 1
  WHERE h.`status` = 2
  AND h.del_flag = 0
  AND h.product_type = 6
  AND h.one_card_pass_support = 1
  GROUP BY s.id) t

结果

id|select_type|table     |partitions|type  |possible_keys|key    |key_len|ref                      |rows |filtered|Extra                                     |
--+-----------+----------+----------+------+-------------+-------+-------+-------------------------+-----+--------+------------------------------------------+
 1|PRIMARY    |<derived2>|          |ALL   |             |       |       |                         |66934|   100.0|                                          |
 2|DERIVED    |sh        |          |ALL   |             |       |       |                         |   81|   100.0|Using where; Using temporary              |
 2|DERIVED    |s         |          |eq_ref|PRIMARY      |PRIMARY|8      |guituke.sh.scenic_spot_id|    1|   100.0|Using index                               |
 2|DERIVED    |h         |          |eq_ref|PRIMARY      |PRIMARY|8      |guituke.sh.homestay_id   |    1|     5.0|Using where                               |
 2|DERIVED    |hfs       |          |ALL   |             |       |       |                         |  787|   100.0|Using where; Using join buffer (hash join)|
 2|DERIVED    |hc        |          |ALL   |             |       |       |                         |   21|   100.0|Using where; Using join buffer (hash join)|
 2|DERIVED    |c         |          |eq_ref|PRIMARY      |PRIMARY|8      |guituke.hc.card_id       |    1|   100.0|Using where                               |

image

  • id :select查询的序列号,包含一组数字,表示查询中执行select子句或操作表的顺序
  • select_type :查询类型 或者是 其他操作类型
  • table :正在访问哪个表
  • partitions :匹配的分区
  • type :访问的类型
  • possible_keys :显示可能应用在这张表中的索引,一个或多个,但不一定实际使用到
  • key :实际使用到的索引,如果为NULL,则没有使用索引
  • key_len :表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度
  • ref :显示索引的哪一列被使用了,如果可能的话,是一个常数,哪些列或常量被用于查找索引列上的值
  • rows :根据表统计信息及索引选用情况,大致估算出找到所需的记录所需读取的行数
  • filtered :查询的表行占表的百分比
  • Extra :包含不适合在其它列中显示但十分重要的额外信息

MySQL explain 应用详解(吐血整理

标签:explain,PRIMARY,查询,索引,mysql,Using,ref,id
From: https://www.cnblogs.com/chenxingyang/p/17918414.html

相关文章

  • 后端程序员必备:15个MySQL表设计的经验准则
    15个MySQL表设计的经验准则在数据库设计中,MySQL表的设计至关重要。一个良好的表设计可以提高数据库的性能、可维护性和数据的准确性。以下是15个MySQL表设计的经验准则,希望能为你的数据库设计提供有益的指导。一、通用字段的设置在设计表时,尽量包含以下几个通用......
  • Lnmp(mysql分离)(nginx 1.13.6+mysql5.5+php5.3)环境一键搭建
    Lnmp(mysql分离)(nginx 1.13.6+mysql5.5+php5.3)环境一键搭建如果对运维课程感兴趣,可以在b站上、csdn或微信视频号上搜索我的账号:运维实战课程,可以关注我,学习更多免费的运维实战技术视频在192.168.37.128服务器上:(mysql只到makeinstall即可)nginx默认站点html1.上传lnmp的安装......
  • 比较相同机器上 redis和mysql分别单独承载的 最大连接数量
    在相同的机器上,Redis和MySQL的最大连接数量会受到硬件配置(如CPU、内存、网络等)、配置参数和应用场景的影响。以下是对Redis和MySQL在单机环境下最大连接数的比较:Redis最大连接数量默认配置:Redis默认的最大连接数为10,000。这个值可以通过配置文件中的maxcl......
  • MySql基础:基本查询
    目录1.INSERT(插入)1.1全列插入1.2指定列插入 1.3插入更新  1.4插入替换2.SELECT查询2.1SELECT列2.1.1全列查询2.1.2指定列查询2.1.3查询字段为表达式2.1.4为查询结果指定别名2.1.5查询结果去重 2.2WHERE查询 2.2.1比较运算查询2.2.1.1  >,......
  • mysql慢sql优化思路
    开启慢sql查询配置,或使用云服务厂商的慢sql统计,找到慢sql看下是不是使用了select*,如果是的话,改为查找字段,因为这样可以避免优化器去解析字段,单次查询可能效果不明显,但是一旦并发上来以后,这个就比较明显了,还有就是减少网络IO的消耗看下对应的数据量级,如果连表的话,是不是小表驱......
  • 2024/10/17日 日志 --》关于MySQL中的 约束、多表查询的初步学习笔记与整理
    今天推进了关于约束以及多表查询的内容,下一步是事务以及关于连接数据库JDBC的学习。点击查看代码----约束--1.概念:--·约束是作用于列上的规则用于限制加入表的数据--·约束的存在保证了数据库中数据的正确性、有效性和完整性--2.约束的分类--非空约束NOTNULL:......
  • 一文彻底弄懂mysql的事务日志,undo log 和 redo log
    在数据库事务管理中,UndoLog和RedoLog是两种关键日志,用于保障事务的原子性和持久性。它们的作用是确保数据库在出现崩溃、断电、宕机等故障时,能够进行恢复操作,从而保障数据一致性和完整性。它们通常用于支持事务的ACID特性中的原子性和持久性。下面将分别介绍UndoLo......
  • 【MySQL】[HY000][1366] Incorrect string value: ‘\xE4\xB8\xA4\xE6\x95\xB0.
    问题描述在导入中文数据时遇到错误。[2024-10-1610:49:49][HY000][1366]Incorrectstringvalue:'\xE4\xB8\xA4\xE6\x95\xB0...'forcolumn'title'atrow1尝试将某些数据插入到名为’title’的列时,遇到了不正确的字符串值。原因分析MySQL5.7创建数据库的默......
  • MySQL 【日期】函数大全(六)
    目录1、TIME_FORMAT() 按照指定的格式格式化时间。2、TIME_TO_SEC() 将指定的时间值转为秒数。3、TIMEDIFF() 返回两个时间之间的差值。4、TIMESTAMP() 累加所有参数并将结果作为日期时间值返回。5、TIMESTAMPADD() 将指定的时间间隔加到一个日期时间值上并返回结果......
  • MySQL大数据量表添加字段
    方法1:复制表的方式1.创建临时表account_bill_tempcreatetableaccount_bill_templikeaccount_bill;2.在新表中添加字段altertableaccount_bill_tempaddcolumubill_idvarchar(64)comment'账单id'afterbill_amount;3.把旧表中的数据迁移到新表中insertintoac......