SQL效率问题定位:
在进行SQL优化前,需定位哪些SQL效率低,这一过程有如下几种方式、方法:
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+树。而根据叶子节点的内存存储不同,索引类型分为主键索引(聚簇索引)和非主键索引(二级索引、辅助索引)。
主键索引的叶子节点,存储的是整行信息。非主键索引叶子节点存储的是主键的值。
原文:https://www.cnblogs.com/lys0410/p/14600258.html