mysql查询优化explain命令详解 xunaa 2024-10-05 07:20:01 编辑说 使用起来非常简单,比如 解释一下select * from user . 执行后,会出现一个解释计划表。参数含义请参考以下参数。针对这些解释方案,我们可以进行相应的优化。 id mysql查询 使用起来非常简单,比如 解释一下select * from user . 执行后,会出现一个解释计划表。参数含义请参考以下参数。针对这些解释方案,我们可以进行相应的优化。 id mysql查询标识符,即序列号。 select_type 查询类型 Simple:简单的select查询,不包括union和子查询; Primary:最外层的select查询; union:表示本次查询是union的第二个或后续查询; 依赖联合:联合中的第二个或后续查询语句依赖于外部查询; union result:并集的结果; 子查询:子查询中的第一个select; 依赖子查询:子查询中的第一个select依赖于外层查询,即子查询依赖于外层查询的结果。 table 所有查询的表。 type是连接类型,是比较重要的一项。从这一项,我们可以看到高效与否的一个重要依据。 性能从最好到最差如下: system:表中只有一条数据,是一种特殊的const类型; const:对主键或唯一索引的等效查询扫描最多仅返回一行数据。 const 查询非常快,因为它只读取一次; eq_ref:这种类型通常出现在多表的连接查询中,也就是说前一个表中的每个结果只能匹配后一个表中的一行结果,并且查询的比较操作通常是=,这样查询结果会更高效率; ref:该类型通常出现在多表连接查询中,针对非唯一或非主键索引,或者使用最左前缀规则索引的查询; fulltext:全文索引检索,请注意全文索引的优先级非常高。如果全文索引和普通索引同时存在,MySQL会不计代价优先使用全文索引; ref_or_null:与ref方法类似,只不过增加了null值的比较。实际上用得并不多; unique_subquery:用于where中的in-form子查询,子查询返回唯一值,没有重复值; index_subquery:用于使用辅助索引或常量列表的形式子查询。子查询可能返回重复值,可以利用索引对子查询进行去重; index_merge:表示查询使用两个以上索引,最后取交集或并集。常见的and 和or 条件使用不同的索引。官方排序是在ref_or_null之后,但实际上,因为需要读取所有索引,所以性能可能大部分时候不如range; Range:表示使用索引范围查询,通过索引字段范围来获取表中的一些数据记录。该类型通常出现在=、=、=、IS NULL、=、BETWEEN、IN 操作中。此时,输出的ref 字段为NULL,key_len 字段是本次查询中使用的最长索引。 Index:全表扫描,但按照索引顺序而不是按行扫描表。主要优点是避免了排序,但开销仍然很高。此时Extra字段会显示Using index; all:性能最差的情况,使用全表扫描时,系统必须避免这种情况。 possible_keys 可能的索引。 key实际使用的索引。 key_len 使用索引字节的长度。 ref 显示使用索引的哪一列。 rows 扫描的行数也是性能评估的重要依据。 额外的配额信息,常见的如下。 Distinct:一旦找到与并集匹配的行,就不再进行搜索; using filesort:使用文件排序,性能很慢,需要优化。 使用索引:查询使用索引,从表中返回列数据,只使用索引中的信息,而不读取实际动作。当表的所有请求列都是同一索引的一部分时,就会发生这种情况。 使用temporary:使用临时表排序,性能很慢,需要优化。 using where:表示使用where进行查询,这个不是很重要。 ALL:此连接类型联合执行每个先前记录的完整扫描。这通常是不好的,需要优化。 执行计划的具体解释可以参考msyql官网: https://dev.mysql.com/doc/refman/5.7/en/explain-output.html 扩张 用户评论 不浪漫罪名 学习数据表的结构很重要啊,才能更好地用explain 命令分析。 有5位网友表示赞同! 娇眉恨 感觉这篇文章挺详细的,解释了各个参数意义很清楚! 有7位网友表示赞同! 良人凉人 MySQL 查询速度很慢的时候,这个 explain 命令可真有用! 有7位网友表示赞同! 致命伤 好久没碰过查询优化了,来看看能不能借鉴一下 有5位网友表示赞同! 恰十年 学习了解这些 Explain 可以更快找到性能瓶颈啊! 有13位网友表示赞同! 一生荒唐 看了这么多优化技巧,感觉自己还是入门级 快速报名 学生姓名 意向学校 意向专业 联系方式 请输入正确的电话号码 或许你还想看: mysql查询优化explain命令详解 MySQLSQL性能分析与优化工具详解 MySQL : 讲解快速查询手册 点赞 免责声明 本站所有收录的学校、专业及发布的图片、内容,均收集整理自互联网,仅用于信息展示,不作为择校或选择专业的建议,若有侵权请联系删除! 大家都在看 上一篇 MySQLSQL性能分析与优化工具详解 下一篇 返回列表 大家都在看 mysql查询优化explain命令详解 使用起来非常简单,比如 解释一下select * from user . 执行后,会出现一个解释计划表。参数含义请参考以下参数。针对这些解释方案,我们可以进行相应的优化。 id mysql查询 艺考资讯 2024-10-05 MySQLSQL性能分析与优化工具详解 系统的性能取决于我们SQL的查询速度。 MySQLExplain命令是分析SQL性能和优化不可或缺的一部分。 解释就是我们所说的解释器。通过explain,我们可以知道以下信息:表的读取顺序 艺考资讯 2024-10-05 MySQL : 讲解快速查询手册 二 . explain 使用 三. 业务实践 在日常实践中,我们应该如何使用explain提供的查询来确定如何配置索引? 以实际业务场景为例。 首先,场景中的数据分布非常均衡,这导致设置的索 艺考资讯 2024-10-05 MySQL性能优化工具详解 解释SELECT * from user_info WHERE id 300;准备 为了方便演示EXPLAIN的使用,首先我们需要创建两张表用于测试,并添加相应的数据: 创建表`user_info` ( `id` BIGINT(20) N 艺考资讯 2024-10-05 这次真的救了我,MySQL索引优化,解释的很清楚。 本文主要讲如何使用explain,以及explain的各种参数概念,后面会讲优化。 一、Explain 用法 模拟Mysql优化器如何执行SQL查询语句,了解Mysql如何处理你的SQL语句。分析查询语句 艺考资讯 2024-10-05 mysql 解释用法 使用时只需在select语句前添加explain即可,如: 解释select * from statuses_status where id=11; 解释栏解释 table:显示这行数据与哪个表相关 type:这是重要的列,显示连接使 艺考资讯 2024-10-05 面试官:如何使用explain来分析SQL执行性能? 介绍 在工作中,我们捕获性能问题最常用的方法就是打开慢查询,定位执行效率差的SQL。然后当我们找到一条SQL时,我们还没有完成。我们还需要知道SQL的执行计划。比如全表扫描或者 艺考资讯 2024-10-05 “对不起”不是“对不起”,小心别人看你! “熟悉的单词有部分含义”是英语中的常见情况。似乎每一个字都认识,但连在一起却又不知道是什么意思。 这里的“Excuse me for a moment”并不意味着“Excuse me for 艺考资讯 2024-10-05 英语报告厅| “对不起”就是“对不起”吗? 英语报告厅 “对不起”只是“对不起”吗? 英语口语中经常使用“Excuse me”这个短语。在我们看来,这句话也应该意味着“对不起”。然而,事实并非如此! “Excuse me”常用于以 艺考资讯 2024-10-05 “Excuse me”的意思是“对不起”,但是“Excuse you”呢? 众所周知,Excuse me的意思是“对不起”,常用于某些场合表达歉意或打扰对方。 那么,既然你学了这么多年《Excuse me》,你见过《Excuse you》吗?你知道它的含义和具体用途吗?今天 艺考资讯 2024-10-05