Mysql 之explain索引效率分析

news/2024/9/21 3:21:35

一、explain语句

EXPLAIN [EXTENDED] SELECT select_options

二、字段分析

1、id

select识别符。这是select的查询序列号,id的值越大优先级别越高,越先被执行,如果id相同,执行顺序右上至下

2、select_type

select_type表示select语句的类型。

3、table

表示这一行的数据是关于哪张表的。

4、type

type表示的是表的连接类型。依次从最优到最差:system>const>eq_ref>ref>range>index>ALL

5、possible_keys

possible_keys列支出mysql能使用哪个索引在该表中找到行。如果这列是null,则没有相关的索引。在这种情况下,可以通过检查where子句查看它是否引用某些列或者适合索引的列来提高查询性能。如果是这样,可以创建适合的索引来提高查询的性能

6、key

key表示查询实际应用到的索引,如果没有选择索引,该列的值是null。想要强制使mysql使用或者忽视possible_type列中的索引,在查询中使用force index,use index 或者 ignore index。

7、key_len

key_len表示mysql选择的索引字段按字节计算的长度,如果键是null,则长度为null,注意通过key_len值可以确定mysql将实际使用一个多列索引中的几个字段

8、ref

ref表示使用哪个列或常数与索引一起来查询记录

9、rows

rows显示mysql表中进行查询时必须检查的行数

10、Extra

extra显示mysql在处理查询时的详细信息。

using index:覆盖索引

using where: 用where查找没有走索引,就需要优化

using index condition:查询的列如果不完全被索引覆盖 ,用到了最左原则

using temporary: 用到临时表,例:distinct去重,可以优化可以优化为using index,给去重列加索引,就会使用覆盖索引

using filesort:文件排序(内存排序,文件较大可能进行磁盘排序),可以优化为using index覆盖排序

三、索引效率分析

USING index 查询效率最高

Using where;USING index; 次于覆盖索引,使用了where过滤和索引查询

Using where 使用了where过滤

Using index condition; 使用了索引,但是要回表查询数据

Using filesort | Using temporary (两个差不多同级,效率都不高)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.ryyt.cn/news/31755.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈,一经查实,立即删除!

相关文章

Shell编程之循环语句与函数

目录1.循环语句(1)for循环语句(2)while循环语句(3)untli循环语句(4)双层循环2.Shell函数(1)函数返回值:(2)函数传参:(3)函数变量的作用范围:(4)递归3.Shell数组(1)定义数组(2)查看数组(3)数组分片、字符替换和删除(4)追加(5)数组排序算法: 1.循环…

使用.net 6.0框架的WPF应用如何引用System.Windows.Forms这个dll

先说结论:能用.ner fx尽量用fx开发,因为很多坑之前的前辈帮你踩过了。。。 解决方法是在这个目录下找到你对应版本的System.Windows.Forms这个dll C:\Program Files\dotnet\packs\Microsoft.WindowsDesktop.App.Ref\6.0.26\ref\net6.0 这个目录每个人版本不一样,想找到最简单…

[C#] [WPF] 在MVVM中实现拖拽功能 - 入门

实现drag&drop功能拖拽功能是使用频率较高的一种交互, 用传统方法去写很简单, 但是在mvvm规则下, 也没必要弄得很麻烦 我的入门案例就选择了使用mvvm重写tutorialspoint - Interaction里的调色盘案例, view如下MainWindow.xaml 这里的重点是控件要允许拖拽以及对应的事件 目…

K8S之yaml 文件详解pod、deployment、service(转)

原文:https://blog.csdn.net/footless_bird/article/details/125946101 作者:墨鸦_Cormorant 来源:CSDNK8S中的 yaml 文件 yaml语法学习Kubernetes 支持 YAML 和 JSON格式 管理资源对象JSON 格式:主要用于 api 接口之间消息的传递YAML 格式:用于配置和管理,YAML是一种简洁…

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版

Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版 Rocky Linux 由 CentOS 项目的创始人 Gregory Kurtzer 领导 请访问原文链接:Rocky Linux 9.4 正式版发布 - RHEL 100% 1:1 兼容免费发行版,查看最新版…

python算法:年龄问题

一,认识递归函数 1,什么是递归?递归的工作原理是,如果函数需要处理的问题大小合适,则直接求解并返回结果,否则将问题分解成两个或多个更小的子问题,并对子问题进行相同的处理,直到问题无法分解为止 2,什么是递归函数:递归函数(recursive function)是指在函数体中可以…

Nginx配置https(证书)报错

一、nginx配置问题 nginx配置https的时候报错:nginx: [emerg]unknown directive35+GAN "ssl" in /usr/local/nginx/conf/nginx.conf:28  或者nginx: [emerg] the "ssl" parameter requires ngx_http_ssl_module in /usr/loca.... 出现这个问题的时候可以…

如何基于原名称批量重命名(格式化)文件(夹)名

首先,需要用到的这个工具:度娘网盘 提取码:qwu2 蓝奏云 提取码:2r1z 现在需要把这些文档的文件名处理,格式为:4位数字 - 6位数字 - 10位数字,办法如下: 打开工具 切换到 文件批量复制 模块,快捷键如图找到右下角的 重命名 按钮,点开把要处理的这些文件拖入进去(如…