前言
整理的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语句优化后的时间是一个让人惊讶的变化。