Explain性能分析概述

    技术2025-04-28  24

    前言

    整理的MySQL的相关技术点,其中的sql语句优化还是很重要的。所以想写一系列的文章来整理一下。这篇就先写概述,SQL语句性能分析的关键子的大概意思! 系列文章: Explain性能分析概述 Explain性能分析(一) Explain性能分析(二) Explain性能分析(三)

    正文

    先说说Explain是什么吧! 使用 EXPLAIN 关键字可以模拟优化器执行 SQL 查询语句,从而知道 MySQL 是如何处理你的 SQL 语句的。分 析你的查询语句或是表结构的性能瓶颈。 可以帮助选择更好的索引和写出更优化的查询语句。 用法: Explain+SQL 语句。 例:

    explain select * from table1,table2,table3 where table1.id=table2.id and table2.id=table.3.id;

    Explain 执行后返回的信息: 接下来分别介绍每个字段是什么意思:

    一、id

    select 查询的序列号,包含一组数字,表示查询中执行 select 子句或操作表的顺序。

    二、select_type

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

    三、table

    这个数据是基于哪张表的。

    四、type

    type 是查询的访问类型。是较为重要的一个指标,结果值从最好到最坏依次是: system > const > eq_ref > ref > fulltext > ref_or_null > index_merge > unique_subquery > index_subquery > range > index > ALL ,一般来说,得保证查询至少达到 range 级别,最好能达到 ref。

    五、possible_keys

    显示可能应用在这张表中的索引,一个或多个。查询涉及到的字段上若存在索引,则该索引将被列出,但不一 定被查询实际使用。

    六、key

    实际使用的索引。如果为NULL,则没有使用索引

    七、key_len

    表示索引中使用的字节数,可通过该列计算查询中使用的索引的长度。 key_len 字段能够帮你检查是否充分的 利用上了索引。ken_len 越长,说明索引使用的越充分。

    八、ref

    显示索引的哪一列被使用了,如果可能的话,是一个常数。哪些列或常量被用于查找索引列上的值。

    九、rows

    rows 列显示 MySQL 认为它执行查询时必须检查的行数。越少越好!

    十、Extra

    其他的额外重要的信息。

    结束

    SQL性能优化是一个很重要的过程,所以能够把Explain的相关技术搞清楚对以后的写sql语句很有帮助,数据量小的时候根本没什么感觉,如果数据量大了的话sql语句优化后的时间是一个让人惊讶的变化。

    Processed: 0.016, SQL: 9