前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >【开发日记】MySQL-Explain调优学习日记

【开发日记】MySQL-Explain调优学习日记

作者头像
全栈开发日记
发布2022-12-07 11:22:38
5210
发布2022-12-07 11:22:38
举报
文章被收录于专栏:全栈开发日记

前言

本文使用的MySQL数据库版本为8.0.28

参考的官方文档链接如下:

https://dev.mysql.com/doc/refman/8.0/en/explain-output.html

作用

用来查看MySQL是如何执行语句的信息,使用这个关键字并不会执行这条SQL语句;

EXPLAIN适用于SELECTDELETEINSERT、REREPLACEUPDATE语句。

使用方式

EXPLAIN SQL语句

如:

EXPLAIN SELECT a,b FROM test_table

执行结果

1、id

表示执行顺序;id值越大执行顺序越靠前,id值相同则按照自上而下的顺序执行。

2、rows列和filtered

rows * filtered / 100 可以估算出将要和explain中前一个表进行连接的行数(前一个表指explain中的id值小的表)

3、select_type

4、table

表示行数据引用的表的名称。还有其他出现的情况可以参考:https://dev.mysql.com/doc/refman/8.0/en/explain-output.html#explain_table

5、partitions

版本5.7以前,该项是EXPLAIN PARTITIONS显示的选项,5.7以后成为了默认选项;该列显示的为分区表命中的分区情况;非分区表该字段为NULL;

6、type

这一列表示访问类型,决定MySQL如何查找表中的行,查找数据行记录的大概范围。

常见的结果从优到差依次为:

system > const > eq_ref > ref > range > index > ALL

一般来说,需要保证起码达到range级别,最好达到ref;其他的不常见的结果值请查看官方说明文档,这里只列举常见的。

7、key_len

表示索引的长度。

计算规则如下:

另外:如果字段允许NULL,需要增加1字节记录是否为NULL。

8、ref

表示查询条件是什么类型,比如查询条件为常量时就是const

9、filtered

表示过滤比例,经过索引过滤后剩下多少满足;最大值为100,这意味着未对行进行筛选,将进行全表扫描;

10、Extra

这列展示额外信息。

注意

① 如果在查询结果集中既有唯一索引,也有二级索引,这时会使用二级索引;辅助索引占用磁盘链比较少。

② 如果SQL中使用了不等于的时候,大多数情况下无法使用索引,会进行全表扫描。

③ SQL中使用了IS NULLIS NOT NULL大多数情况无法使用索引,会进行全表扫描。

④ SQL中使用LIKE模糊查询时,写法如%abc...无法使用索引,会进行全表扫描;百分号在后时会使用索引,如abc%;可以尝试使用覆盖索引,使被查询的列被索引覆盖。

⑤ 减少使用ORIN使用频率,多数情况下无法使用索引。

- 此文完 -

本文参与 腾讯云自媒体同步曝光计划,分享自微信公众号。
原始发表:2022-10-31,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 全栈开发日记 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 前言
  • 作用
  • 使用方式
  • 执行结果
    • 1、id列
      • 2、rows列和filtered列
        • 3、select_type列
          • 4、table列
            • 5、partitions列
              • 6、type列
                • 7、key_len列
                  • 8、ref列
                    • 9、filtered列
                      • 10、Extra列
                      • 注意
                      相关产品与服务
                      云数据库 SQL Server
                      腾讯云数据库 SQL Server (TencentDB for SQL Server)是业界最常用的商用数据库之一,对基于 Windows 架构的应用程序具有完美的支持。TencentDB for SQL Server 拥有微软正版授权,可持续为用户提供最新的功能,避免未授权使用软件的风险。具有即开即用、稳定可靠、安全运行、弹性扩缩等特点。
                      领券
                      问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档