美文网首页
坚持打卡学习第五天——mysql中文文档学习三(优化查询)

坚持打卡学习第五天——mysql中文文档学习三(优化查询)

作者: 去追星星 | 来源:发表于2021-12-20 18:26 被阅读0次

explain语法(获取select相关信息)

explain tab是describe tab、show columns from tab同义词
利用explain可以知道什么时候必须为表加入索引,从而得到一个使用索引来寻找记录更快的select

-- 查看sql是否使用了索引,在前面加上EXPLAIN
EXPLAIN SELECT * FROM pet WHERE name = 'fang'; 

[图片上传失败...(image-3b17d0-1640050915307)]

字段 解释
id SELECT识别符,SELECT的查询序列号
select_type 查询类型
table 输出结果集的表
partitions 匹配的分区
type 表的连接类型
passible_keys 可能使用的索引
key 实际使用的索引
key_len 决定使用的索引长度
ref 列与索引的比较
rows 显示执行查询时必须检查的行数
filtered 按表条件过滤的行百分比
Extra 解决查询的详细信息,执行情况的描述和说明
1.select_type查询类型

(1)SIMPLE:简单的SELECT(没有使用UNION或子查询)
(2)PRIMARY:最外层查询
(3)UNION:UNION中第二个或后面的SELECT语句
(4)DEPENDENT UINON:UNION中第二个或后面的SELECT语句,取决于外面的查询
(5)UNION RESUIT :UNION的结果,UNION后面所有SELECT
(6)SUBQUERY:子查询中的第一个SELECT
(7)DEPENDENT SUBQUERY:子查询中的第一个SELECT,取决于外面的查询
(8)DERIVED:导出表的SELECT,FROM子句的子查询

2.type

联接类型,性能丛差到好:ALL、index、range、index_subquery、unique_subquery、index_merge、ref_or_null、 ref、eq_ref、const、system
(1)ALL:遍历全表查找匹配的行
(2)index:与ALL相同,只扫描索引树
(3)range:只检索给定范围的行,使用一个索引来选择行
(4)index_subquery:与unique_subquery类似,可以替换IN子查询
(5)unique_subquery:一个索引查找函数,可以完全替换子查询,效率更高
(6)index_merge:使用索引合并优化方法,此种情况key列包含了使用索引清单,key_len包含了使用的索引的最长的关键元素
(7)ref_or_null:如同ref,但添加了包含NULL的值的行
(8)ref:表示上述表的联接匹配条件,哪些列或常量被用于查找索引列上的值
(9)eq_ref:区别于ref,使用唯一索引(PRIMARY KAY或UNIQUE)
(10)const:表最多有一个匹配行,在开始查询时被读取
(11)system:表仅有一行
。。。。。。

总结

这知识不太友好,后面回看吧。。。

相关文章

网友评论

      本文标题:坚持打卡学习第五天——mysql中文文档学习三(优化查询)

      本文链接:https://www.haomeiwen.com/subject/vbdzfrtx.html