mysql笔记—sql性能分析
1.查看数据库各个语句的执行频次
show global/session status like ‘com__’
2.慢查询
默认没有开启,需要手动开启(在/etc/my.cnf中开启)
开启后在localhost-slow.log中可以查询到慢查询的语句的相关信息:
3.explain
用法:直接在dql语句前面加explain
解释:
1.id:id越大越先执行,id相同越靠前越先执行
2.select type
表示 SELECT 的类型,常见的取值有SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION中的第二个或者后面的查询语句)、SUBOUERY(SELECT/WHERE之后包含了子查询)等
3.type
表示连接类型,性能由好到差的连接类型为NULL、system、const(主键等唯一索引)、eq_ref、ref(非唯一索引)、range、index(全索引扫描)、all(全表扫描)4.possible_key
可能用到的索引
5.Key
实际使用的索引,如果为NULL,则没有使用索引
6.Key_len
表示索引中使用的字节数,该值为索引字段最大可能长度,并非实际使用长度,在不损失精确性的前提下,长度越短越好7.extra
一些额外信息:
Using index:用了覆盖索引,也就是说,查询所需的数据可以直接从索引中获取
Using index condition:用了部分覆盖索引,但是所需要的数据不能完全从索引中获取
Using where:使用了where,但是无法通过覆盖索引直接查找到
Using temporary:使用了临时表,可能存在分组、排序、去重等操作