SQL优化(1)-分析方法(工具)

SQL效率问题定位:

在进行SQL优化前,需定位哪些SQL效率低,这一过程有如下几种方式、方法:

  1. show profiles:是mysql提供可以用来分析当前会话中语句执行的资源消耗情况。可以用于SQL的调优测量,show profiles 能够在做SQL优化时帮助我们了解时间都耗费到哪里去了。
  2. 慢日志:慢日志默认是关闭的,可配置开启(slow_query_log)、指定慢日志文件名、配置查询时间限制(定义超过多少时间为慢查询)。

explain:

通过上述方法定位到效率低的SQL后,可通过explain分析SQL如何执行的。

字段 含义
 id select查询的序列号,是一组数字,表示的是查询中执行select子句或者是操作表的顺序。
select_type 表示 SELECT 的类型,常见的取值有 SIMPLE(简单表,即不使用表连接或者子查询)、PRIMARY(主查询,即外层的查询)、UNION(UNION 中的第二个或者后面的查询语句)、SUBQUERY(子查询中的第一个SELECT)等
 table  输出结果集的表
 type 表示表的连接类型,性能由好到差的连接类型为( system ---> const-----> eq_ref ------> ref -------> ref_or_null---->index_merge ---> index_subquery -----> range ----->index ------> all )
 possible_keys 表示查询时,可能使用的索引
 key 表示实际使用的索引
 key_len 索引字段的长度
 rows 扫描行的数量
 extra 执行情况的说明和描述

MySQL默认使用存储引擎InnonDB的索引结构是B+树。而根据叶子节点的内存存储不同,索引类型分为主键索引(聚簇索引)和非主键索引(二级索引、辅助索引)。

主键索引的叶子节点,存储的是整行信息。非主键索引叶子节点存储的是主键的值。

posted @ 2021-04-06 12:31  lys0410  阅读(69)  评论(0编辑  收藏  举报